diff --git a/runtime.ts b/runtime.ts index 1e031e7f7e..b805259ca0 100644 --- a/runtime.ts +++ b/runtime.ts @@ -10,6 +10,8 @@ import * as util from "./util"; import { log } from "./util"; import * as os from "./os"; +const EOL = "\n"; + // This class represents a module. We call it FileModule to make it explicit // that each module represents a single file. // Access to FileModule instances should only be done thru the static method @@ -151,7 +153,12 @@ class Compiler { .concat(this.service.getSyntacticDiagnostics(fileName)) .concat(this.service.getSemanticDiagnostics(fileName)); if (diagnostics.length > 0) { - throw Error("diagnotics"); + const errMsg = ts.formatDiagnosticsWithColorAndContext( + diagnostics, + formatDiagnosticsHost + ); + console.log(errMsg); + os.exit(1); } util.log("compile output", output); @@ -199,7 +206,6 @@ class TypeScriptHost implements ts.LanguageServiceHost { } getNewLine() { - const EOL = "\n"; return EOL; } @@ -242,3 +248,15 @@ class TypeScriptHost implements ts.LanguageServiceHost { }); } } + +const formatDiagnosticsHost: ts.FormatDiagnosticsHost = { + getCurrentDirectory(): string { + return "."; + }, + getCanonicalFileName(fileName: string): string { + return fileName; + }, + getNewLine(): string { + return EOL; + } +};