From acedf3c2472e1ec226509fdca1020f6080ae3890 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Mon, 30 Nov 2015 12:46:53 -0800 Subject: [PATCH] Do not emit files if noEmit is specified Handles #5799 --- src/compiler/declarationEmitter.ts | 2 +- src/compiler/emitter.ts | 2 +- src/harness/compilerRunner.ts | 2 +- .../reference/jsFileCompilationBindErrors.js | 25 ------------------- 4 files changed, 3 insertions(+), 28 deletions(-) delete mode 100644 tests/baselines/reference/jsFileCompilationBindErrors.js diff --git a/src/compiler/declarationEmitter.ts b/src/compiler/declarationEmitter.ts index 0e0b121bf3c..6e09a398ea6 100644 --- a/src/compiler/declarationEmitter.ts +++ b/src/compiler/declarationEmitter.ts @@ -1675,7 +1675,7 @@ namespace ts { /* @internal */ export function writeDeclarationFile(declarationFilePath: string, sourceFiles: SourceFile[], isBundledEmit: boolean, host: EmitHost, resolver: EmitResolver, emitterDiagnostics: DiagnosticCollection) { const emitDeclarationResult = emitDeclarations(host, resolver, emitterDiagnostics, declarationFilePath, sourceFiles, isBundledEmit); - const emitSkipped = emitDeclarationResult.reportedDeclarationError || host.isEmitBlocked(declarationFilePath); + const emitSkipped = emitDeclarationResult.reportedDeclarationError || host.isEmitBlocked(declarationFilePath) || host.getCompilerOptions().noEmit; if (!emitSkipped) { const declarationOutput = emitDeclarationResult.referencePathsOutput + getDeclarationOutput(emitDeclarationResult.synchronousDeclarationOutput, emitDeclarationResult.moduleElementDeclarationEmitInfo); diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index b4d2e02e4f0..78188c338f6 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -8221,7 +8221,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function emitFile({ jsFilePath, sourceMapFilePath, declarationFilePath}: { jsFilePath: string, sourceMapFilePath: string, declarationFilePath: string }, sourceFiles: SourceFile[], isBundledEmit: boolean) { // Make sure not to write js File and source map file if any of them cannot be written - if (!host.isEmitBlocked(jsFilePath)) { + if (!host.isEmitBlocked(jsFilePath) && !compilerOptions.noEmit) { emitJavaScript(jsFilePath, sourceMapFilePath, sourceFiles, isBundledEmit); } else { diff --git a/src/harness/compilerRunner.ts b/src/harness/compilerRunner.ts index 4f3607cf182..8ee287b2637 100644 --- a/src/harness/compilerRunner.ts +++ b/src/harness/compilerRunner.ts @@ -142,7 +142,7 @@ class CompilerBaselineRunner extends RunnerBase { it("Correct JS output for " + fileName, () => { if (hasNonDtsFiles && this.emit) { - if (result.files.length === 0 && result.errors.length === 0) { + if (!options.noEmit && result.files.length === 0 && result.errors.length === 0) { throw new Error("Expected at least one js file to be emitted or at least one error to be created."); } diff --git a/tests/baselines/reference/jsFileCompilationBindErrors.js b/tests/baselines/reference/jsFileCompilationBindErrors.js deleted file mode 100644 index e4b515e2b69..00000000000 --- a/tests/baselines/reference/jsFileCompilationBindErrors.js +++ /dev/null @@ -1,25 +0,0 @@ -//// [a.js] -let C = "sss"; -let C = 0; // Error: Cannot redeclare block-scoped variable 'C'. - -function f() { - return; - return; // Error: Unreachable code detected. -} - -function b() { - "use strict"; - var arguments = 0; // Error: Invalid use of 'arguments' in strict mode. -} - -//// [a.js] -var C = "sss"; -var C = 0; // Error: Cannot redeclare block-scoped variable 'C'. -function f() { - return; - return; // Error: Unreachable code detected. -} -function b() { - "use strict"; - var arguments = 0; // Error: Invalid use of 'arguments' in strict mode. -}