diff options
-rw-r--r-- | js/compiler.ts | 51 | ||||
-rw-r--r-- | tests/error_003_typescript2.test | 7 |
2 files changed, 35 insertions, 23 deletions
diff --git a/js/compiler.ts b/js/compiler.ts index fed592fa0..15adba746 100644 --- a/js/compiler.ts +++ b/js/compiler.ts @@ -379,34 +379,39 @@ window.compilerMain = function compilerMain(): void { const options = host.getCompilationSettings(); const program = ts.createProgram(rootNames, options, host); + + const preEmitDiagnostics = ts.getPreEmitDiagnostics(program).filter( + ({ code }): boolean => { + // TS2691: An import path cannot end with a '.ts' extension. Consider + // importing 'bad-module' instead. + if (code === 2691) return false; + // TS5009: Cannot find the common subdirectory path for the input files. + if (code === 5009) return false; + // TS5055: Cannot write file + // 'http://localhost:4545/tests/subdir/mt_application_x_javascript.j4.js' + // because it would overwrite input file. + if (code === 5055) return false; + // TypeScript is overly opinionated that only CommonJS modules kinds can + // support JSON imports. Allegedly this was fixed in + // Microsoft/TypeScript#26825 but that doesn't seem to be working here, + // so we will ignore complaints about this compiler setting. + if (code === 5070) return false; + return true; + } + ); + if (preEmitDiagnostics.length > 0) { + host._logDiagnostics(preEmitDiagnostics); + // The above _logDiagnostics calls os.exit(). The return is here just for + // clarity. + return; + } + const emitResult = program!.emit(); // TODO(ry) Print diagnostics in Rust. // https://github.com/denoland/deno/pull/2310 - const diagnostics = ts - .getPreEmitDiagnostics(program) - .concat(emitResult.diagnostics) - .filter( - ({ code }): boolean => { - // TS2691: An import path cannot end with a '.ts' extension. Consider - // importing 'bad-module' instead. - if (code === 2691) return false; - // TS5009: Cannot find the common subdirectory path for the input files. - if (code === 5009) return false; - // TS5055: Cannot write file - // 'http://localhost:4545/tests/subdir/mt_application_x_javascript.j4.js' - // because it would overwrite input file. - if (code === 5055) return false; - // TypeScript is overly opinionated that only CommonJS modules kinds can - // support JSON imports. Allegedly this was fixed in - // Microsoft/TypeScript#26825 but that doesn't seem to be working here, - // so we will ignore complaints about this compiler setting. - if (code === 5070) return false; - return true; - } - ); - + const { diagnostics } = emitResult; if (diagnostics.length > 0) { host._logDiagnostics(diagnostics); // The above _logDiagnostics calls os.exit(). The return is here just for diff --git a/tests/error_003_typescript2.test b/tests/error_003_typescript2.test new file mode 100644 index 000000000..62e66d7e7 --- /dev/null +++ b/tests/error_003_typescript2.test @@ -0,0 +1,7 @@ +# Supposing that we've already attempted to run error_003_typescript.ts +# we want to make sure that JS wasn't emitted. Running again without reload flag +# should result in the same output. +# https://github.com/denoland/deno/issues/2436 +args: run tests/error_003_typescript.ts +exit_code: 1 +output: tests/error_003_typescript.ts.out |