fix(ivy): report watch mode diagnostics correctly (#33862)
This commit changes the reporting of watch mode diagnostics for ngtsc to use the same formatting as non-watch mode diagnostics. This prints rich and contextual errors even in watch mode, which previously was not the case. Fixes #32213 PR Close #33862
This commit is contained in:
parent
4be8929844
commit
97fbdab3b8
|
@ -223,28 +223,36 @@ function reportErrorsAndExit(
|
|||
allDiagnostics: Diagnostics, options?: api.CompilerOptions,
|
||||
consoleError: (s: string) => void = console.error): number {
|
||||
const errorsAndWarnings = filterErrorsAndWarnings(allDiagnostics);
|
||||
if (errorsAndWarnings.length) {
|
||||
const formatHost = getFormatDiagnosticsHost(options);
|
||||
if (options && options.enableIvy !== false) {
|
||||
const ngDiagnostics = errorsAndWarnings.filter(api.isNgDiagnostic);
|
||||
const tsDiagnostics = errorsAndWarnings.filter(api.isTsDiagnostic);
|
||||
consoleError(replaceTsWithNgInErrors(
|
||||
ts.formatDiagnosticsWithColorAndContext(tsDiagnostics, formatHost)));
|
||||
consoleError(formatDiagnostics(ngDiagnostics, formatHost));
|
||||
} else {
|
||||
consoleError(formatDiagnostics(errorsAndWarnings, formatHost));
|
||||
}
|
||||
}
|
||||
printDiagnostics(errorsAndWarnings, options, consoleError);
|
||||
return exitCodeFromResult(allDiagnostics);
|
||||
}
|
||||
|
||||
export function watchMode(
|
||||
project: string, options: api.CompilerOptions, consoleError: (s: string) => void) {
|
||||
return performWatchCompilation(createPerformWatchHost(project, diagnostics => {
|
||||
consoleError(formatDiagnostics(diagnostics, getFormatDiagnosticsHost(options)));
|
||||
printDiagnostics(diagnostics, options, consoleError);
|
||||
}, options, options => createEmitCallback(options)));
|
||||
}
|
||||
|
||||
function printDiagnostics(
|
||||
diagnostics: ReadonlyArray<ts.Diagnostic|api.Diagnostic>,
|
||||
options: api.CompilerOptions | undefined, consoleError: (s: string) => void): void {
|
||||
if (diagnostics.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const formatHost = getFormatDiagnosticsHost(options);
|
||||
if (options && options.enableIvy !== false) {
|
||||
const ngDiagnostics = diagnostics.filter(api.isNgDiagnostic);
|
||||
const tsDiagnostics = diagnostics.filter(api.isTsDiagnostic);
|
||||
consoleError(replaceTsWithNgInErrors(
|
||||
ts.formatDiagnosticsWithColorAndContext(tsDiagnostics, formatHost)));
|
||||
consoleError(formatDiagnostics(ngDiagnostics, formatHost));
|
||||
} else {
|
||||
consoleError(formatDiagnostics(diagnostics, formatHost));
|
||||
}
|
||||
}
|
||||
|
||||
// CLI entry point
|
||||
if (require.main === module) {
|
||||
const args = process.argv.slice(2);
|
||||
|
|
Loading…
Reference in New Issue