diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 130a156c33b54..edda0354a832f 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -8328,6 +8328,11 @@ namespace ts { getCurrentDirectory?(): string; } + /* @internal */ + export interface HasCurrentDirectory { + getCurrentDirectory(): string; + } + /*@internal*/ export interface ModuleSpecifierResolutionHost { useCaseSensitiveFileNames?(): boolean; diff --git a/src/compiler/watch.ts b/src/compiler/watch.ts index 9fe053a7ff841..951b16a311893 100644 --- a/src/compiler/watch.ts +++ b/src/compiler/watch.ts @@ -64,7 +64,7 @@ namespace ts { } /** - * Create a function that reports watch status by writing to the system and handles the formating of the diagnostic + * Create a function that reports watch status by writing to the system and handles the formatting of the diagnostic */ export function createWatchStatusReporter(system: System, pretty?: boolean): WatchStatusReporter { return pretty ? @@ -133,7 +133,8 @@ namespace ts { export function getErrorSummaryText( errorCount: number, filesInError: readonly (ReportFileInError | undefined)[], - newLine: string + newLine: string, + host: HasCurrentDirectory ) { if (errorCount === 0) return ""; const nonNilFiles = filesInError.filter(fileInError => fileInError !== undefined); @@ -154,10 +155,10 @@ namespace ts { Diagnostics.Found_0_errors_in_1_files, errorCount, distinctFileNamesWithLines.length); - return `${newLine}${flattenDiagnosticMessageText(d.messageText, newLine)}${newLine}${newLine}${errorCount > 1 ? createTabularErrorsDisplay(nonNilFiles) : ""}`; + return `${newLine}${flattenDiagnosticMessageText(d.messageText, newLine)}${newLine}${newLine}${errorCount > 1 ? createTabularErrorsDisplay(nonNilFiles, host) : ""}`; } - function createTabularErrorsDisplay(filesInError: (ReportFileInError | undefined)[]) { + function createTabularErrorsDisplay(filesInError: (ReportFileInError | undefined)[], host: HasCurrentDirectory) { const distinctFiles = filesInError.filter((value, index, self) => index === self.findIndex(file => file?.fileName === value?.fileName)); if (distinctFiles.length === 0) return ""; @@ -178,7 +179,9 @@ namespace ts { const leftPadding = errorCountDigitsLength < leftPaddingGoal ? " ".repeat(leftPaddingGoal - errorCountDigitsLength) : ""; - tabularData += `${leftPadding}${errorCount} ${file!.fileName}:${file!.line}\n`; + + const relativePath = getRelativePathFromDirectory(host.getCurrentDirectory(), file!.fileName, /* ignoreCase */ false); + tabularData += `${leftPadding}${errorCount} ${relativePath}:${file!.line}\n`; }); return tabularData; @@ -727,7 +730,7 @@ namespace ts { builderProgram, input.reportDiagnostic || createDiagnosticReporter(system), s => host.trace && host.trace(s), - input.reportErrorSummary || input.options.pretty ? (errorCount, filesInError) => system.write(getErrorSummaryText(errorCount, filesInError, system.newLine)) : undefined + input.reportErrorSummary || input.options.pretty ? (errorCount, filesInError) => system.write(getErrorSummaryText(errorCount, filesInError, system.newLine, host)) : undefined ); if (input.afterProgramEmitAndDiagnostics) input.afterProgramEmitAndDiagnostics(builderProgram); return exitStatus; diff --git a/src/executeCommandLine/executeCommandLine.ts b/src/executeCommandLine/executeCommandLine.ts index b4b206daa0cf6..cbdba05b3ac9b 100644 --- a/src/executeCommandLine/executeCommandLine.ts +++ b/src/executeCommandLine/executeCommandLine.ts @@ -773,7 +773,7 @@ namespace ts { function createReportErrorSummary(sys: System, options: CompilerOptions | BuildOptions): ReportEmitErrorSummary | undefined { return shouldBePretty(sys, options) ? - (errorCount, filesInError) => sys.write(getErrorSummaryText(errorCount, filesInError, sys.newLine)) : + (errorCount, filesInError) => sys.write(getErrorSummaryText(errorCount, filesInError, sys.newLine, sys)) : undefined; } diff --git a/src/harness/harnessIO.ts b/src/harness/harnessIO.ts index c7588bfecc375..99da90f44c32a 100644 --- a/src/harness/harnessIO.ts +++ b/src/harness/harnessIO.ts @@ -537,7 +537,7 @@ namespace Harness { outputLines += content; } if (pretty) { - outputLines += ts.getErrorSummaryText(ts.getErrorCountForSummary(diagnostics), ts.getFilesInErrorForSummary(diagnostics), IO.newLine()); + outputLines += ts.getErrorSummaryText(ts.getErrorCountForSummary(diagnostics), ts.getFilesInErrorForSummary(diagnostics), IO.newLine(), { getCurrentDirectory: () => "" }); } return outputLines; } diff --git a/src/testRunner/unittests/tsbuild/publicApi.ts b/src/testRunner/unittests/tsbuild/publicApi.ts index 4c2758329f206..4b9d5ae5b6060 100644 --- a/src/testRunner/unittests/tsbuild/publicApi.ts +++ b/src/testRunner/unittests/tsbuild/publicApi.ts @@ -54,7 +54,7 @@ export function f22() { } // trailing`, /*createProgram*/ undefined, createDiagnosticReporter(sys, /*pretty*/ true), createBuilderStatusReporter(sys, /*pretty*/ true), - (errorCount, filesInError) => sys.write(getErrorSummaryText(errorCount, filesInError, sys.newLine)) + (errorCount, filesInError) => sys.write(getErrorSummaryText(errorCount, filesInError, sys.newLine, sys)) ); buildHost.afterProgramEmitAndDiagnostics = cb; buildHost.afterEmitBundle = cb; @@ -121,4 +121,4 @@ ${patch ? vfs.formatPatch(patch) : ""}` }); verifyTscBaseline(() => sys); }); -} \ No newline at end of file +} diff --git a/src/testRunner/unittests/tscWatch/helpers.ts b/src/testRunner/unittests/tscWatch/helpers.ts index 1263b59af7b0d..881502781b80f 100644 --- a/src/testRunner/unittests/tscWatch/helpers.ts +++ b/src/testRunner/unittests/tscWatch/helpers.ts @@ -215,7 +215,7 @@ namespace ts.tscWatch { [ ...map(errors, hostOutputDiagnostic), ...reportErrorSummary ? - [hostOutputWatchDiagnostic(getErrorSummaryText(errors.length, files, host.newLine))] : + [hostOutputWatchDiagnostic(getErrorSummaryText(errors.length, files, host.newLine, host))] : emptyArray ] ); diff --git a/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-composite.js b/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-composite.js index 0bafe3085597c..aa7b17e9f66c2 100644 --- a/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-composite.js +++ b/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-composite.js @@ -313,8 +313,8 @@ Output:: Found 2 errors in 2 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -722,9 +722,9 @@ Output:: Found 3 errors in 3 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 - 1 /src/project/src/noChangeFileWithEmitSpecificError.ts:1 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 + 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -939,9 +939,9 @@ Output:: Found 3 errors in 3 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 - 1 /src/project/src/noChangeFileWithEmitSpecificError.ts:1 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 + 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -977,8 +977,8 @@ Output:: Found 2 errors in 2 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -1014,8 +1014,8 @@ Output:: Found 2 errors in 2 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -1056,9 +1056,9 @@ Output:: Found 3 errors in 3 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 - 1 /src/project/src/noChangeFileWithEmitSpecificError.ts:1 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 + 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated diff --git a/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-incremental-declaration.js b/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-incremental-declaration.js index 255c963a2e8d4..8fc7dc9852d55 100644 --- a/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-incremental-declaration.js +++ b/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-incremental-declaration.js @@ -313,8 +313,8 @@ Output:: Found 2 errors in 2 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -722,9 +722,9 @@ Output:: Found 3 errors in 3 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 - 1 /src/project/src/noChangeFileWithEmitSpecificError.ts:1 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 + 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -939,9 +939,9 @@ Output:: Found 3 errors in 3 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 - 1 /src/project/src/noChangeFileWithEmitSpecificError.ts:1 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 + 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -977,8 +977,8 @@ Output:: Found 2 errors in 2 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -1014,8 +1014,8 @@ Output:: Found 2 errors in 2 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -1056,9 +1056,9 @@ Output:: Found 3 errors in 3 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 - 1 /src/project/src/noChangeFileWithEmitSpecificError.ts:1 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 + 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated diff --git a/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-incremental.js b/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-incremental.js index b9aa470834562..e7d221921b3b3 100644 --- a/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-incremental.js +++ b/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-incremental.js @@ -281,8 +281,8 @@ Output:: Found 2 errors in 2 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -680,9 +680,9 @@ Output:: Found 3 errors in 3 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 - 1 /src/project/src/noChangeFileWithEmitSpecificError.ts:1 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 + 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -885,9 +885,9 @@ Output:: Found 3 errors in 3 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 - 1 /src/project/src/noChangeFileWithEmitSpecificError.ts:1 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 + 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -923,8 +923,8 @@ Output:: Found 2 errors in 2 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -960,8 +960,8 @@ Output:: Found 2 errors in 2 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -1002,9 +1002,9 @@ Output:: Found 3 errors in 3 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 - 1 /src/project/src/noChangeFileWithEmitSpecificError.ts:1 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 + 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated diff --git a/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-with-initial-noEmit-composite.js b/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-with-initial-noEmit-composite.js index e207a494dd5c7..6d208ee2a2486 100644 --- a/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-with-initial-noEmit-composite.js +++ b/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-with-initial-noEmit-composite.js @@ -440,9 +440,9 @@ Output:: Found 3 errors in 3 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 - 1 /src/project/src/noChangeFileWithEmitSpecificError.ts:1 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 + 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated diff --git a/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-with-initial-noEmit-incremental-declaration.js b/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-with-initial-noEmit-incremental-declaration.js index d03a9e09bb458..6adaadb8f9acc 100644 --- a/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-with-initial-noEmit-incremental-declaration.js +++ b/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-with-initial-noEmit-incremental-declaration.js @@ -440,9 +440,9 @@ Output:: Found 3 errors in 3 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 - 1 /src/project/src/noChangeFileWithEmitSpecificError.ts:1 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 + 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated diff --git a/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-with-initial-noEmit-incremental.js b/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-with-initial-noEmit-incremental.js index bfb25e16e35ab..5054fdc37844e 100644 --- a/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-with-initial-noEmit-incremental.js +++ b/tests/baselines/reference/tsc/incremental/initial-build/noEmit-changes-with-initial-noEmit-incremental.js @@ -405,9 +405,9 @@ Output:: Found 3 errors in 3 files. Errors Files - 1 /src/project/src/directUse.ts:2 - 1 /src/project/src/indirectUse.ts:2 - 1 /src/project/src/noChangeFileWithEmitSpecificError.ts:1 + 1 src/project/src/directUse.ts:2 + 1 src/project/src/indirectUse.ts:2 + 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated diff --git a/tests/baselines/reference/tsc/incremental/initial-build/when-global-file-is-added,-the-signatures-are-updated.js b/tests/baselines/reference/tsc/incremental/initial-build/when-global-file-is-added,-the-signatures-are-updated.js index 11de0578f8923..57b2c39f5ff94 100644 --- a/tests/baselines/reference/tsc/incremental/initial-build/when-global-file-is-added,-the-signatures-are-updated.js +++ b/tests/baselines/reference/tsc/incremental/initial-build/when-global-file-is-added,-the-signatures-are-updated.js @@ -50,8 +50,8 @@ Output:: Found 2 errors in 2 files. Errors Files - 1 /src/project/src/anotherFileWithSameReferenes.ts:2 - 1 /src/project/src/main.ts:2 + 1 src/project/src/anotherFileWithSameReferenes.ts:2 + 1 src/project/src/main.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated Program root files: ["/src/project/src/anotherFileWithSameReferenes.ts","/src/project/src/filePresent.ts","/src/project/src/main.ts"] Program options: {"composite":true,"project":"/src/project","configFilePath":"/src/project/tsconfig.json"} @@ -202,8 +202,8 @@ Output:: Found 2 errors in 2 files. Errors Files - 1 /src/project/src/anotherFileWithSameReferenes.ts:2 - 1 /src/project/src/main.ts:2 + 1 src/project/src/anotherFileWithSameReferenes.ts:2 + 1 src/project/src/main.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated Program root files: ["/src/project/src/anotherFileWithSameReferenes.ts","/src/project/src/filePresent.ts","/src/project/src/main.ts"] Program options: {"composite":true,"project":"/src/project","configFilePath":"/src/project/tsconfig.json"} @@ -247,8 +247,8 @@ Output:: Found 2 errors in 2 files. Errors Files - 1 /src/project/src/anotherFileWithSameReferenes.ts:2 - 1 /src/project/src/main.ts:2 + 1 src/project/src/anotherFileWithSameReferenes.ts:2 + 1 src/project/src/main.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated Program root files: ["/src/project/src/anotherFileWithSameReferenes.ts","/src/project/src/filePresent.ts","/src/project/src/main.ts"] Program options: {"composite":true,"project":"/src/project","configFilePath":"/src/project/tsconfig.json"} @@ -377,8 +377,8 @@ Output:: Found 2 errors in 2 files. Errors Files - 1 /src/project/src/anotherFileWithSameReferenes.ts:2 - 1 /src/project/src/main.ts:2 + 1 src/project/src/anotherFileWithSameReferenes.ts:2 + 1 src/project/src/main.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated Program root files: ["/src/project/src/anotherFileWithSameReferenes.ts","/src/project/src/filePresent.ts","/src/project/src/main.ts"] Program options: {"composite":true,"project":"/src/project","configFilePath":"/src/project/tsconfig.json"} @@ -503,8 +503,8 @@ Output:: Found 2 errors in 2 files. Errors Files - 1 /src/project/src/anotherFileWithSameReferenes.ts:2 - 1 /src/project/src/main.ts:3 + 1 src/project/src/anotherFileWithSameReferenes.ts:2 + 1 src/project/src/main.ts:3 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated Program root files: ["/src/project/src/anotherFileWithSameReferenes.ts","/src/project/src/filePresent.ts","/src/project/src/main.ts","/src/project/src/newFile.ts"] Program options: {"composite":true,"project":"/src/project","configFilePath":"/src/project/tsconfig.json"}