From 145b106c20bc5e6008bcbe93027f14a84eda614d Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Mon, 3 Jun 2024 13:59:28 -0700 Subject: [PATCH] Tests refactor for easy comparison between outFile and multiFile scenario (#58761) --- .../unittests/helpers/declarationEmit.ts | 2 +- .../unittests/helpers/noEmitOnError.ts | 2 +- .../unittests/tsbuild/commandLine.ts | 360 ++++++---------- .../unittests/tsbuild/configFileErrors.ts | 2 +- .../unittests/tsbuild/fileDelete.ts | 8 +- src/testRunner/unittests/tsbuild/noEmit.ts | 44 +- .../tsbuildWatch/configFileErrors.ts | 2 +- .../unittests/tsbuildWatch/noEmit.ts | 2 +- src/testRunner/unittests/tsc/incremental.ts | 149 +++---- src/testRunner/unittests/tsc/noEmit.ts | 20 +- src/testRunner/unittests/tsc/noEmitOnError.ts | 8 +- src/testRunner/unittests/tscWatch/watchApi.ts | 88 ++-- .../different-options-discrepancies.js | 0 ...-options-with-incremental-discrepancies.js | 0 .../different-options-with-incremental.js | 0 .../{ => multiFile}/different-options.js | 0 ...Only-false-on-commandline-discrepancies.js | 0 ...claration-and-incremental-discrepancies.js | 0 ...ndline-with-declaration-and-incremental.js | 0 ...y-false-on-commandline-with-declaration.js | 0 ...mitDeclarationOnly-false-on-commandline.js | 0 ...rationOnly-on-commandline-discrepancies.js | 0 ...claration-and-incremental-discrepancies.js | 0 ...ndline-with-declaration-and-incremental.js | 0 ...ionOnly-on-commandline-with-declaration.js | 0 .../emitDeclarationOnly-on-commandline.js | 0 .../different-options-discrepancies.js} | 10 +- ...options-with-incremental-discrepancies.js} | 0 .../different-options-with-incremental.js} | 0 .../different-options.js} | 4 +- ...nly-false-on-commandline-discrepancies.js} | 0 ...laration-and-incremental-discrepancies.js} | 0 ...dline-with-declaration-and-incremental.js} | 0 ...-false-on-commandline-with-declaration.js} | 0 ...itDeclarationOnly-false-on-commandline.js} | 0 ...ationOnly-on-commandline-discrepancies.js} | 0 ...laration-and-incremental-discrepancies.js} | 0 ...dline-with-declaration-and-incremental.js} | 0 ...onOnly-on-commandline-with-declaration.js} | 0 .../emitDeclarationOnly-on-commandline.js} | 0 ...tax-errors-in-config-file-discrepancies.js | 0 .../reports-syntax-errors-in-config-file.js | 0 .../reports-syntax-errors-in-config-file.js} | 0 ...-dts-generation-errors-with-incremental.js | 0 .../reports-dts-generation-errors.js | 0 ...dts-generation-errors-with-incremental.js} | 0 .../reports-dts-generation-errors.js} | 0 .../deleted-file-without-composite.js | 0 .../detects-deleted-file-discrepancies.js | 0 .../{ => multiFile}/detects-deleted-file.js | 0 .../deleted-file-without-composite.js} | 0 .../detects-deleted-file.js} | 0 .../semantic-errors-with-incremental.js | 0 .../noEmit/{ => multiFile}/semantic-errors.js | 0 .../syntax-errors-with-incremental.js | 0 .../noEmit/{ => multiFile}/syntax-errors.js | 0 .../semantic-errors-with-incremental.js} | 0 .../semantic-errors.js} | 0 .../syntax-errors-with-incremental.js} | 0 .../syntax-errors.js} | 0 ...rrors-with-declaration-with-incremental.js | 0 .../semantic-errors-with-declaration.js | 0 .../semantic-errors-with-incremental.js | 0 .../{ => multiFile}/semantic-errors.js | 0 ...rrors-with-declaration-with-incremental.js | 0 .../syntax-errors-with-declaration.js | 0 .../syntax-errors-with-incremental.js | 0 .../{ => multiFile}/syntax-errors.js | 0 ...rors-with-declaration-with-incremental.js} | 0 .../semantic-errors-with-declaration.js} | 0 .../semantic-errors-with-incremental.js} | 0 .../semantic-errors.js} | 0 ...rors-with-declaration-with-incremental.js} | 0 .../syntax-errors-with-declaration.js} | 0 .../syntax-errors-with-incremental.js} | 0 .../syntax-errors.js} | 0 .../reports-syntax-errors-in-config-file.js | 0 .../reports-syntax-errors-in-config-file.js} | 0 ...n-no-files-are-emitted-with-incremental.js | 0 ...when-watching-when-no-files-are-emitted.js | 0 ...-no-files-are-emitted-with-incremental.js} | 0 ...hen-watching-when-no-files-are-emitted.js} | 0 ...error-with-declaration-with-incremental.js | 0 ...mit-any-files-on-error-with-declaration.js | 0 ...mit-any-files-on-error-with-incremental.js | 0 .../does-not-emit-any-files-on-error.js | 0 ...rror-with-declaration-with-incremental.js} | 0 ...it-any-files-on-error-with-declaration.js} | 0 ...it-any-files-on-error-with-incremental.js} | 0 .../does-not-emit-any-files-on-error.js} | 0 ...-dts-generation-errors-with-incremental.js | 0 .../reports-dts-generation-errors.js | 0 ...dts-generation-errors-with-incremental.js} | 0 .../reports-dts-generation-errors.js} | 0 .../different-options-discrepancies.js | 0 ...-options-with-incremental-discrepancies.js | 0 .../different-options-with-incremental.js | 0 .../{ => multiFile}/different-options.js | 0 .../different-options-discrepancies.js} | 0 ...options-with-incremental-discrepancies.js} | 0 .../different-options-with-incremental.js} | 0 .../different-options.js} | 0 .../changes-composite-discrepancies.js | 0 .../{ => multiFile}/changes-composite.js | 0 .../changes-incremental-declaration.js | 0 .../{ => multiFile}/changes-incremental.js | 0 ...-initial-noEmit-composite-discrepancies.js | 0 .../changes-with-initial-noEmit-composite.js | 0 ...-initial-noEmit-incremental-declaration.js | 0 ...changes-with-initial-noEmit-incremental.js | 0 .../changes-composite.js} | 401 ++++++++++-------- .../changes-incremental-declaration.js} | 397 +++++++++-------- .../changes-incremental.js} | 339 +++++++-------- .../changes-with-initial-noEmit-composite.js} | 271 +++++++++--- ...initial-noEmit-incremental-declaration.js} | 267 +++++++++--- ...hanges-with-initial-noEmit-incremental.js} | 209 ++++++--- ...-before-fixing-error-with-noEmitOnError.js | 0 ...rrors-with-declaration-with-incremental.js | 0 .../semantic-errors-with-declaration.js | 0 .../semantic-errors-with-incremental.js | 0 .../{ => multiFile}/semantic-errors.js | 0 ...rrors-with-declaration-with-incremental.js | 0 .../syntax-errors-with-declaration.js | 0 .../syntax-errors-with-incremental.js | 0 .../{ => multiFile}/syntax-errors.js | 0 ...en-declarationMap-changes-discrepancies.js | 0 .../when-declarationMap-changes.js | 0 ...before-fixing-error-with-noEmitOnError.js} | 0 ...rors-with-declaration-with-incremental.js} | 0 .../semantic-errors-with-declaration.js} | 0 .../semantic-errors-with-incremental.js} | 0 .../semantic-errors.js} | 0 ...rors-with-declaration-with-incremental.js} | 0 .../syntax-errors-with-declaration.js} | 0 .../syntax-errors-with-incremental.js} | 0 .../syntax-errors.js} | 0 .../when-declarationMap-changes.js} | 0 ...Error-with-declaration-with-incremental.js | 0 .../noEmitOnError-with-declaration.js | 0 .../noEmitOnError-with-incremental.js | 0 .../{ => multiFile}/noEmitOnError.js | 0 ...rror-with-declaration-with-incremental.js} | 0 .../noEmitOnError-with-declaration.js} | 0 .../noEmitOnError-with-incremental.js} | 0 .../noEmitOnError.js} | 0 ...noEmit-with-composite-with-emit-builder.js | 0 ...it-with-composite-with-semantic-builder.js | 0 ...nError-with-composite-with-emit-builder.js | 0 ...or-with-composite-with-semantic-builder.js | 0 .../semantic-builder-emitOnlyDts.js | 0 ...createSemanticDiagnosticsBuilderProgram.js | 0 .../when-emitting-with-emitOnlyDtsFiles.js | 0 ...oEmit-with-composite-with-emit-builder.js} | 0 ...t-with-composite-with-semantic-builder.js} | 0 ...Error-with-composite-with-emit-builder.js} | 0 ...r-with-composite-with-semantic-builder.js} | 0 .../outFile/semantic-builder-emitOnlyDts.js | 249 +++++++++++ ...reateSemanticDiagnosticsBuilderProgram.js} | 0 .../when-emitting-with-emitOnlyDtsFiles.js} | 0 159 files changed, 1748 insertions(+), 1086 deletions(-) rename tests/baselines/reference/tsbuild/commandLine/{ => multiFile}/different-options-discrepancies.js (100%) rename tests/baselines/reference/tsbuild/commandLine/{ => multiFile}/different-options-with-incremental-discrepancies.js (100%) rename tests/baselines/reference/tsbuild/commandLine/{ => multiFile}/different-options-with-incremental.js (100%) rename tests/baselines/reference/tsbuild/commandLine/{ => multiFile}/different-options.js (100%) rename tests/baselines/reference/tsbuild/commandLine/{ => multiFile}/emitDeclarationOnly-false-on-commandline-discrepancies.js (100%) rename tests/baselines/reference/tsbuild/commandLine/{ => multiFile}/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental-discrepancies.js (100%) rename tests/baselines/reference/tsbuild/commandLine/{ => multiFile}/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental.js (100%) rename tests/baselines/reference/tsbuild/commandLine/{ => multiFile}/emitDeclarationOnly-false-on-commandline-with-declaration.js (100%) rename tests/baselines/reference/tsbuild/commandLine/{ => multiFile}/emitDeclarationOnly-false-on-commandline.js (100%) rename tests/baselines/reference/tsbuild/commandLine/{ => multiFile}/emitDeclarationOnly-on-commandline-discrepancies.js (100%) rename tests/baselines/reference/tsbuild/commandLine/{ => multiFile}/emitDeclarationOnly-on-commandline-with-declaration-and-incremental-discrepancies.js (100%) rename tests/baselines/reference/tsbuild/commandLine/{ => multiFile}/emitDeclarationOnly-on-commandline-with-declaration-and-incremental.js (100%) rename tests/baselines/reference/tsbuild/commandLine/{ => multiFile}/emitDeclarationOnly-on-commandline-with-declaration.js (100%) rename tests/baselines/reference/tsbuild/commandLine/{ => multiFile}/emitDeclarationOnly-on-commandline.js (100%) rename tests/baselines/reference/{tsc/incremental/different-options-with-outFile-discrepancies.js => tsbuild/commandLine/outFile/different-options-discrepancies.js} (98%) rename tests/baselines/reference/tsbuild/commandLine/{different-options-with-incremental-with-outFile-discrepancies.js => outFile/different-options-with-incremental-discrepancies.js} (100%) rename tests/baselines/reference/tsbuild/commandLine/{different-options-with-incremental-with-outFile.js => outFile/different-options-with-incremental.js} (100%) rename tests/baselines/reference/tsbuild/commandLine/{different-options-with-outFile.js => outFile/different-options.js} (99%) rename tests/baselines/reference/tsbuild/commandLine/{emitDeclarationOnly-false-on-commandline-with-outFile-discrepancies.js => outFile/emitDeclarationOnly-false-on-commandline-discrepancies.js} (100%) rename tests/baselines/reference/tsbuild/commandLine/{emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental-with-outFile-discrepancies.js => outFile/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental-discrepancies.js} (100%) rename tests/baselines/reference/tsbuild/commandLine/{emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental-with-outFile.js => outFile/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental.js} (100%) rename tests/baselines/reference/tsbuild/commandLine/{emitDeclarationOnly-false-on-commandline-with-declaration-with-outFile.js => outFile/emitDeclarationOnly-false-on-commandline-with-declaration.js} (100%) rename tests/baselines/reference/tsbuild/commandLine/{emitDeclarationOnly-false-on-commandline-with-outFile.js => outFile/emitDeclarationOnly-false-on-commandline.js} (100%) rename tests/baselines/reference/tsbuild/commandLine/{emitDeclarationOnly-on-commandline-with-outFile-discrepancies.js => outFile/emitDeclarationOnly-on-commandline-discrepancies.js} (100%) rename tests/baselines/reference/tsbuild/commandLine/{emitDeclarationOnly-on-commandline-with-declaration-and-incremental-with-outFile-discrepancies.js => outFile/emitDeclarationOnly-on-commandline-with-declaration-and-incremental-discrepancies.js} (100%) rename tests/baselines/reference/tsbuild/commandLine/{emitDeclarationOnly-on-commandline-with-declaration-and-incremental-with-outFile.js => outFile/emitDeclarationOnly-on-commandline-with-declaration-and-incremental.js} (100%) rename tests/baselines/reference/tsbuild/commandLine/{emitDeclarationOnly-on-commandline-with-declaration-with-outFile.js => outFile/emitDeclarationOnly-on-commandline-with-declaration.js} (100%) rename tests/baselines/reference/tsbuild/commandLine/{emitDeclarationOnly-on-commandline-with-outFile.js => outFile/emitDeclarationOnly-on-commandline.js} (100%) rename tests/baselines/reference/tsbuild/configFileErrors/{ => multiFile}/reports-syntax-errors-in-config-file-discrepancies.js (100%) rename tests/baselines/reference/tsbuild/configFileErrors/{ => multiFile}/reports-syntax-errors-in-config-file.js (100%) rename tests/baselines/reference/tsbuild/configFileErrors/{reports-syntax-errors-in-config-file-with-outFile.js => outFile/reports-syntax-errors-in-config-file.js} (100%) rename tests/baselines/reference/tsbuild/declarationEmit/{ => multiFile}/reports-dts-generation-errors-with-incremental.js (100%) rename tests/baselines/reference/tsbuild/declarationEmit/{ => multiFile}/reports-dts-generation-errors.js (100%) rename tests/baselines/reference/tsbuild/declarationEmit/{reports-dts-generation-errors-outFile-with-incremental.js => outFile/reports-dts-generation-errors-with-incremental.js} (100%) rename tests/baselines/reference/tsbuild/declarationEmit/{reports-dts-generation-errors-outFile.js => outFile/reports-dts-generation-errors.js} (100%) rename tests/baselines/reference/tsbuild/fileDelete/{ => multiFile}/deleted-file-without-composite.js (100%) rename tests/baselines/reference/tsbuild/fileDelete/{ => multiFile}/detects-deleted-file-discrepancies.js (100%) rename tests/baselines/reference/tsbuild/fileDelete/{ => multiFile}/detects-deleted-file.js (100%) rename tests/baselines/reference/tsbuild/fileDelete/{deleted-file-with-outFile-without-composite.js => outFile/deleted-file-without-composite.js} (100%) rename tests/baselines/reference/tsbuild/fileDelete/{detects-deleted-file-with-outFile.js => outFile/detects-deleted-file.js} (100%) rename tests/baselines/reference/tsbuild/noEmit/{ => multiFile}/semantic-errors-with-incremental.js (100%) rename tests/baselines/reference/tsbuild/noEmit/{ => multiFile}/semantic-errors.js (100%) rename tests/baselines/reference/tsbuild/noEmit/{ => multiFile}/syntax-errors-with-incremental.js (100%) rename tests/baselines/reference/tsbuild/noEmit/{ => multiFile}/syntax-errors.js (100%) rename tests/baselines/reference/tsbuild/noEmit/{semantic-errors-with-outFile-with-incremental.js => outFile/semantic-errors-with-incremental.js} (100%) rename tests/baselines/reference/tsbuild/noEmit/{semantic-errors-with-outFile.js => outFile/semantic-errors.js} (100%) rename tests/baselines/reference/tsbuild/noEmit/{syntax-errors-with-outFile-with-incremental.js => outFile/syntax-errors-with-incremental.js} (100%) rename tests/baselines/reference/tsbuild/noEmit/{syntax-errors-with-outFile.js => outFile/syntax-errors.js} (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{ => multiFile}/semantic-errors-with-declaration-with-incremental.js (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{ => multiFile}/semantic-errors-with-declaration.js (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{ => multiFile}/semantic-errors-with-incremental.js (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{ => multiFile}/semantic-errors.js (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{ => multiFile}/syntax-errors-with-declaration-with-incremental.js (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{ => multiFile}/syntax-errors-with-declaration.js (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{ => multiFile}/syntax-errors-with-incremental.js (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{ => multiFile}/syntax-errors.js (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{semantic-errors-outFile-with-declaration-with-incremental.js => outFile/semantic-errors-with-declaration-with-incremental.js} (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{semantic-errors-outFile-with-declaration.js => outFile/semantic-errors-with-declaration.js} (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{semantic-errors-outFile-with-incremental.js => outFile/semantic-errors-with-incremental.js} (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{semantic-errors-outFile.js => outFile/semantic-errors.js} (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{syntax-errors-outFile-with-declaration-with-incremental.js => outFile/syntax-errors-with-declaration-with-incremental.js} (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{syntax-errors-outFile-with-declaration.js => outFile/syntax-errors-with-declaration.js} (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{syntax-errors-outFile-with-incremental.js => outFile/syntax-errors-with-incremental.js} (100%) rename tests/baselines/reference/tsbuild/noEmitOnError/{syntax-errors-outFile.js => outFile/syntax-errors.js} (100%) rename tests/baselines/reference/tsbuildWatch/configFileErrors/{ => multiFile}/reports-syntax-errors-in-config-file.js (100%) rename tests/baselines/reference/tsbuildWatch/configFileErrors/{reports-syntax-errors-in-config-file-with-outFile.js => outFile/reports-syntax-errors-in-config-file.js} (100%) rename tests/baselines/reference/tsbuildWatch/noEmit/{ => multiFile}/does-not-go-in-loop-when-watching-when-no-files-are-emitted-with-incremental.js (100%) rename tests/baselines/reference/tsbuildWatch/noEmit/{ => multiFile}/does-not-go-in-loop-when-watching-when-no-files-are-emitted.js (100%) rename tests/baselines/reference/tsbuildWatch/noEmit/{does-not-go-in-loop-when-watching-when-no-files-are-emitted-with-outFile-with-incremental.js => outFile/does-not-go-in-loop-when-watching-when-no-files-are-emitted-with-incremental.js} (100%) rename tests/baselines/reference/tsbuildWatch/noEmit/{does-not-go-in-loop-when-watching-when-no-files-are-emitted-with-outFile.js => outFile/does-not-go-in-loop-when-watching-when-no-files-are-emitted.js} (100%) rename tests/baselines/reference/tsbuildWatch/noEmitOnError/{ => multiFile}/does-not-emit-any-files-on-error-with-declaration-with-incremental.js (100%) rename tests/baselines/reference/tsbuildWatch/noEmitOnError/{ => multiFile}/does-not-emit-any-files-on-error-with-declaration.js (100%) rename tests/baselines/reference/tsbuildWatch/noEmitOnError/{ => multiFile}/does-not-emit-any-files-on-error-with-incremental.js (100%) rename tests/baselines/reference/tsbuildWatch/noEmitOnError/{ => multiFile}/does-not-emit-any-files-on-error.js (100%) rename tests/baselines/reference/tsbuildWatch/noEmitOnError/{does-not-emit-any-files-on-error-outFile-with-declaration-with-incremental.js => outFile/does-not-emit-any-files-on-error-with-declaration-with-incremental.js} (100%) rename tests/baselines/reference/tsbuildWatch/noEmitOnError/{does-not-emit-any-files-on-error-outFile-with-declaration.js => outFile/does-not-emit-any-files-on-error-with-declaration.js} (100%) rename tests/baselines/reference/tsbuildWatch/noEmitOnError/{does-not-emit-any-files-on-error-outFile-with-incremental.js => outFile/does-not-emit-any-files-on-error-with-incremental.js} (100%) rename tests/baselines/reference/tsbuildWatch/noEmitOnError/{does-not-emit-any-files-on-error-outFile.js => outFile/does-not-emit-any-files-on-error.js} (100%) rename tests/baselines/reference/tsc/declarationEmit/{ => multiFile}/reports-dts-generation-errors-with-incremental.js (100%) rename tests/baselines/reference/tsc/declarationEmit/{ => multiFile}/reports-dts-generation-errors.js (100%) rename tests/baselines/reference/tsc/declarationEmit/{reports-dts-generation-errors-outFile-with-incremental.js => outFile/reports-dts-generation-errors-with-incremental.js} (100%) rename tests/baselines/reference/tsc/declarationEmit/{reports-dts-generation-errors-outFile.js => outFile/reports-dts-generation-errors.js} (100%) rename tests/baselines/reference/tsc/incremental/{ => multiFile}/different-options-discrepancies.js (100%) rename tests/baselines/reference/tsc/incremental/{ => multiFile}/different-options-with-incremental-discrepancies.js (100%) rename tests/baselines/reference/tsc/incremental/{ => multiFile}/different-options-with-incremental.js (100%) rename tests/baselines/reference/tsc/incremental/{ => multiFile}/different-options.js (100%) rename tests/baselines/reference/{tsbuild/commandLine/different-options-with-outFile-discrepancies.js => tsc/incremental/outFile/different-options-discrepancies.js} (100%) rename tests/baselines/reference/tsc/incremental/{different-options-with-incremental-with-outFile-discrepancies.js => outFile/different-options-with-incremental-discrepancies.js} (100%) rename tests/baselines/reference/tsc/incremental/{different-options-with-incremental-with-outFile.js => outFile/different-options-with-incremental.js} (100%) rename tests/baselines/reference/tsc/incremental/{different-options-with-outFile.js => outFile/different-options.js} (100%) rename tests/baselines/reference/tsc/noEmit/{ => multiFile}/changes-composite-discrepancies.js (100%) rename tests/baselines/reference/tsc/noEmit/{ => multiFile}/changes-composite.js (100%) rename tests/baselines/reference/tsc/noEmit/{ => multiFile}/changes-incremental-declaration.js (100%) rename tests/baselines/reference/tsc/noEmit/{ => multiFile}/changes-incremental.js (100%) rename tests/baselines/reference/tsc/noEmit/{ => multiFile}/changes-with-initial-noEmit-composite-discrepancies.js (100%) rename tests/baselines/reference/tsc/noEmit/{ => multiFile}/changes-with-initial-noEmit-composite.js (100%) rename tests/baselines/reference/tsc/noEmit/{ => multiFile}/changes-with-initial-noEmit-incremental-declaration.js (100%) rename tests/baselines/reference/tsc/noEmit/{ => multiFile}/changes-with-initial-noEmit-incremental.js (100%) rename tests/baselines/reference/tsc/noEmit/{changes-composite-outFile.js => outFile/changes-composite.js} (72%) rename tests/baselines/reference/tsc/noEmit/{changes-incremental-declaration-outFile.js => outFile/changes-incremental-declaration.js} (78%) rename tests/baselines/reference/tsc/noEmit/{changes-incremental-outFile.js => outFile/changes-incremental.js} (79%) rename tests/baselines/reference/tsc/noEmit/{changes-with-initial-noEmit-composite-outFile.js => outFile/changes-with-initial-noEmit-composite.js} (66%) rename tests/baselines/reference/tsc/noEmit/{changes-with-initial-noEmit-incremental-declaration-outFile.js => outFile/changes-with-initial-noEmit-incremental-declaration.js} (74%) rename tests/baselines/reference/tsc/noEmit/{changes-with-initial-noEmit-incremental-outFile.js => outFile/changes-with-initial-noEmit-incremental.js} (78%) rename tests/baselines/reference/tsc/noEmitOnError/{ => multiFile}/file-deleted-before-fixing-error-with-noEmitOnError.js (100%) rename tests/baselines/reference/tsc/noEmitOnError/{ => multiFile}/semantic-errors-with-declaration-with-incremental.js (100%) rename tests/baselines/reference/tsc/noEmitOnError/{ => multiFile}/semantic-errors-with-declaration.js (100%) rename tests/baselines/reference/tsc/noEmitOnError/{ => multiFile}/semantic-errors-with-incremental.js (100%) rename tests/baselines/reference/tsc/noEmitOnError/{ => multiFile}/semantic-errors.js (100%) rename tests/baselines/reference/tsc/noEmitOnError/{ => multiFile}/syntax-errors-with-declaration-with-incremental.js (100%) rename tests/baselines/reference/tsc/noEmitOnError/{ => multiFile}/syntax-errors-with-declaration.js (100%) rename tests/baselines/reference/tsc/noEmitOnError/{ => multiFile}/syntax-errors-with-incremental.js (100%) rename tests/baselines/reference/tsc/noEmitOnError/{ => multiFile}/syntax-errors.js (100%) rename tests/baselines/reference/tsc/noEmitOnError/{ => multiFile}/when-declarationMap-changes-discrepancies.js (100%) rename tests/baselines/reference/tsc/noEmitOnError/{ => multiFile}/when-declarationMap-changes.js (100%) rename tests/baselines/reference/tsc/noEmitOnError/{file-deleted-before-fixing-error-with-noEmitOnError-with-outFile.js => outFile/file-deleted-before-fixing-error-with-noEmitOnError.js} (100%) rename tests/baselines/reference/tsc/noEmitOnError/{semantic-errors-outFile-with-declaration-with-incremental.js => outFile/semantic-errors-with-declaration-with-incremental.js} (100%) rename tests/baselines/reference/tsc/noEmitOnError/{semantic-errors-outFile-with-declaration.js => outFile/semantic-errors-with-declaration.js} (100%) rename tests/baselines/reference/tsc/noEmitOnError/{semantic-errors-outFile-with-incremental.js => outFile/semantic-errors-with-incremental.js} (100%) rename tests/baselines/reference/tsc/noEmitOnError/{semantic-errors-outFile.js => outFile/semantic-errors.js} (100%) rename tests/baselines/reference/tsc/noEmitOnError/{syntax-errors-outFile-with-declaration-with-incremental.js => outFile/syntax-errors-with-declaration-with-incremental.js} (100%) rename tests/baselines/reference/tsc/noEmitOnError/{syntax-errors-outFile-with-declaration.js => outFile/syntax-errors-with-declaration.js} (100%) rename tests/baselines/reference/tsc/noEmitOnError/{syntax-errors-outFile-with-incremental.js => outFile/syntax-errors-with-incremental.js} (100%) rename tests/baselines/reference/tsc/noEmitOnError/{syntax-errors-outFile.js => outFile/syntax-errors.js} (100%) rename tests/baselines/reference/tsc/noEmitOnError/{when-declarationMap-changes-with-outFile.js => outFile/when-declarationMap-changes.js} (100%) rename tests/baselines/reference/tscWatch/noEmitOnError/{ => multiFile}/noEmitOnError-with-declaration-with-incremental.js (100%) rename tests/baselines/reference/tscWatch/noEmitOnError/{ => multiFile}/noEmitOnError-with-declaration.js (100%) rename tests/baselines/reference/tscWatch/noEmitOnError/{ => multiFile}/noEmitOnError-with-incremental.js (100%) rename tests/baselines/reference/tscWatch/noEmitOnError/{ => multiFile}/noEmitOnError.js (100%) rename tests/baselines/reference/tscWatch/noEmitOnError/{noEmitOnError-outFile-with-declaration-with-incremental.js => outFile/noEmitOnError-with-declaration-with-incremental.js} (100%) rename tests/baselines/reference/tscWatch/noEmitOnError/{noEmitOnError-outFile-with-declaration.js => outFile/noEmitOnError-with-declaration.js} (100%) rename tests/baselines/reference/tscWatch/noEmitOnError/{noEmitOnError-outFile-with-incremental.js => outFile/noEmitOnError-with-incremental.js} (100%) rename tests/baselines/reference/tscWatch/noEmitOnError/{noEmitOnError-outFile.js => outFile/noEmitOnError.js} (100%) rename tests/baselines/reference/tscWatch/watchApi/{ => multiFile}/noEmit-with-composite-with-emit-builder.js (100%) rename tests/baselines/reference/tscWatch/watchApi/{ => multiFile}/noEmit-with-composite-with-semantic-builder.js (100%) rename tests/baselines/reference/tscWatch/watchApi/{ => multiFile}/noEmitOnError-with-composite-with-emit-builder.js (100%) rename tests/baselines/reference/tscWatch/watchApi/{ => multiFile}/noEmitOnError-with-composite-with-semantic-builder.js (100%) rename tests/baselines/reference/tscWatch/watchApi/{ => multiFile}/semantic-builder-emitOnlyDts.js (100%) rename tests/baselines/reference/tscWatch/watchApi/{ => multiFile}/verifies-that-noEmit-is-handled-on-createSemanticDiagnosticsBuilderProgram.js (100%) rename tests/baselines/reference/tscWatch/watchApi/{ => multiFile}/when-emitting-with-emitOnlyDtsFiles.js (100%) rename tests/baselines/reference/tscWatch/watchApi/{noEmit-with-composite-with-emit-builder-outFile.js => outFile/noEmit-with-composite-with-emit-builder.js} (100%) rename tests/baselines/reference/tscWatch/watchApi/{noEmit-with-composite-with-semantic-builder-outFile.js => outFile/noEmit-with-composite-with-semantic-builder.js} (100%) rename tests/baselines/reference/tscWatch/watchApi/{noEmitOnError-with-composite-with-emit-builder-outFile.js => outFile/noEmitOnError-with-composite-with-emit-builder.js} (100%) rename tests/baselines/reference/tscWatch/watchApi/{noEmitOnError-with-composite-with-semantic-builder-outFile.js => outFile/noEmitOnError-with-composite-with-semantic-builder.js} (100%) create mode 100644 tests/baselines/reference/tscWatch/watchApi/outFile/semantic-builder-emitOnlyDts.js rename tests/baselines/reference/tscWatch/watchApi/{verifies-that-noEmit-is-handled-on-createSemanticDiagnosticsBuilderProgramwith-outFile.js => outFile/verifies-that-noEmit-is-handled-on-createSemanticDiagnosticsBuilderProgram.js} (100%) rename tests/baselines/reference/tscWatch/watchApi/{when-emitting-with-emitOnlyDtsFiles-with-outFile.js => outFile/when-emitting-with-emitOnlyDtsFiles.js} (100%) diff --git a/src/testRunner/unittests/helpers/declarationEmit.ts b/src/testRunner/unittests/helpers/declarationEmit.ts index 2b811b7cfd632..c99e2e0c2472d 100644 --- a/src/testRunner/unittests/helpers/declarationEmit.ts +++ b/src/testRunner/unittests/helpers/declarationEmit.ts @@ -78,7 +78,7 @@ export function forEachDeclarationEmitWithErrorsScenario( for (const outFile of [false, true]) { for (const incremental of [undefined, true] as const) { action( - scenario => `${scenario}${outFile ? " outFile" : ""}${incremental ? " with incremental" : ""}`, + scenario => `${outFile ? "outFile" : "multiFile"}/${scenario}${incremental ? " with incremental" : ""}`, () => (outFile ? getFsForDeclarationEmitWithErrorsWithOutFile : getFsForDeclarationEmitWithErrors)( diff --git a/src/testRunner/unittests/helpers/noEmitOnError.ts b/src/testRunner/unittests/helpers/noEmitOnError.ts index 8db21b5a39c6c..3c7d0d2e87047 100644 --- a/src/testRunner/unittests/helpers/noEmitOnError.ts +++ b/src/testRunner/unittests/helpers/noEmitOnError.ts @@ -46,7 +46,7 @@ export function forEachNoEmitOnErrorScenario( for (const declaration of [undefined, true] as const) { for (const incremental of [undefined, true] as const) { action( - scenario => `${scenario}${outFile ? " outFile" : ""}${declaration ? " with declaration" : ""}${incremental ? " with incremental" : ""}`, + scenario => `${outFile ? "outFile" : "multiFile"}/${scenario}${declaration ? " with declaration" : ""}${incremental ? " with incremental" : ""}`, () => loadFs( getFsContentsForNoEmitOnError(outFile, declaration, incremental), diff --git a/src/testRunner/unittests/tsbuild/commandLine.ts b/src/testRunner/unittests/tsbuild/commandLine.ts index f0196213262fa..fd4f32179c9d3 100644 --- a/src/testRunner/unittests/tsbuild/commandLine.ts +++ b/src/testRunner/unittests/tsbuild/commandLine.ts @@ -13,6 +13,9 @@ import { } from "../helpers/vfs.js"; describe("unittests:: tsbuild:: commandLine::", () => { + function scenarioName(text: string, options: ts.CompilerOptions) { + return `${options.outFile ? "outFile" : "multiFile"}/${text}`; + } describe("different options::", () => { function withOptionChange(caption: string, ...options: readonly string[]): TestTscEdit { return { @@ -77,92 +80,53 @@ describe("unittests:: tsbuild:: commandLine::", () => { "/src/project/d.ts": `import { b } from "./b";export const d = b;`, }); } - verifyTsc({ - scenario: "commandLine", - subScenario: "different options", - fs: () => fs({ composite: true }), - commandLineArgs: ["--b", "/src/project", "--verbose"], - edits: [ - withOptionChange("with sourceMap", "--sourceMap"), - noChangeWithSubscenario("should re-emit only js so they dont contain sourcemap"), - withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"), - noChangeRun, - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - noChangeWithSubscenario("should re-emit only dts so they dont contain sourcemap"), - withOptionChangeAndDiscrepancyExplanation("with emitDeclarationOnly should not emit anything", "--emitDeclarationOnly"), - noChangeRun, - localChange(), - withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"), - withOptionChange("with inlineSourceMap", "--inlineSourceMap"), - withOptionChange("with sourceMap", "--sourceMap"), - ], - baselinePrograms: true, - }); - verifyTsc({ - scenario: "commandLine", - subScenario: "different options with outFile", - fs: () => fs({ composite: true, outFile: "../outFile.js", module: ts.ModuleKind.AMD }), - commandLineArgs: ["--b", "/src/project", "--verbose"], - edits: [ - withOptionChange("with sourceMap", "--sourceMap"), - noChangeWithSubscenario("should re-emit only js so they dont contain sourcemap"), - withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"), - noChangeRun, - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - noChangeWithSubscenario("should re-emit only dts so they dont contain sourcemap"), - withEmitDeclarationOnlyChangeAndDiscrepancyExplanation("with emitDeclarationOnly should not emit anything"), - noChangeRun, - localChange(), - withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"), - withOptionChange("with inlineSourceMap", "--inlineSourceMap"), - withOptionChange("with sourceMap", "--sourceMap"), - ], - baselinePrograms: true, - }); - verifyTsc({ - scenario: "commandLine", - subScenario: "different options with incremental", - fs: () => fs({ incremental: true }), - commandLineArgs: ["--b", "/src/project", "--verbose"], - edits: [ - withOptionChange("with sourceMap", "--sourceMap"), - withOptionChange("should re-emit only js so they dont contain sourcemap"), - withOptionChange("with declaration, emit Dts and should not emit js", "--declaration"), - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - nochangeWithIncrementalDeclarationFromBeforeExplaination(), - localChange(), - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - nochangeWithIncrementalDeclarationFromBeforeExplaination(), - withOptionChange("with inlineSourceMap", "--inlineSourceMap"), - withOptionChange("with sourceMap", "--sourceMap"), - noChangeWithSubscenario("emit js files"), - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - withOptionChange("with declaration and declarationMap, should not re-emit", "--declaration", "--declarationMap"), - ], - baselinePrograms: true, - }); - verifyTsc({ - scenario: "commandLine", - subScenario: "different options with incremental with outFile", - fs: () => fs({ incremental: true, outFile: "../outFile.js", module: ts.ModuleKind.AMD }), - commandLineArgs: ["--b", "/src/project", "--verbose"], - edits: [ - withOptionChange("with sourceMap", "--sourceMap"), - noChangeWithSubscenario("should re-emit only js so they dont contain sourcemap"), - withOptionChange("with declaration, emit Dts and should not emit js", "--declaration"), - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - nochangeWithIncrementalOutDeclarationFromBeforeExplaination(), - localChange(), - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - nochangeWithIncrementalOutDeclarationFromBeforeExplaination(), - withOptionChange("with inlineSourceMap", "--inlineSourceMap"), - withOptionChange("with sourceMap", "--sourceMap"), - noChangeWithSubscenario("emit js files"), - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - withOptionChange("with declaration and declarationMap, should not re-emit", "--declaration", "--declarationMap"), - ], - baselinePrograms: true, - }); + function verify(options: ts.CompilerOptions) { + verifyTsc({ + scenario: "commandLine", + subScenario: scenarioName("different options", options), + fs: () => fs({ composite: true, ...options }), + commandLineArgs: ["--b", "/src/project", "--verbose"], + edits: [ + withOptionChange("with sourceMap", "--sourceMap"), + noChangeWithSubscenario("should re-emit only js so they dont contain sourcemap"), + withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"), + noChangeRun, + withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), + noChangeWithSubscenario("should re-emit only dts so they dont contain sourcemap"), + withOptionChangeAndDiscrepancyExplanation("with emitDeclarationOnly should not emit anything", "--emitDeclarationOnly"), + noChangeRun, + localChange(), + !options.outFile ? withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration") : withEmitDeclarationOnlyChangeAndDiscrepancyExplanation("with emitDeclarationOnly should not emit anything"), + withOptionChange("with inlineSourceMap", "--inlineSourceMap"), + withOptionChange("with sourceMap", "--sourceMap"), + ], + baselinePrograms: true, + }); + verifyTsc({ + scenario: "commandLine", + subScenario: scenarioName("different options with incremental", options), + fs: () => fs({ incremental: true, ...options }), + commandLineArgs: ["--b", "/src/project", "--verbose"], + edits: [ + withOptionChange("with sourceMap", "--sourceMap"), + withOptionChange("should re-emit only js so they dont contain sourcemap"), + withOptionChange("with declaration, emit Dts and should not emit js", "--declaration"), + withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), + !options.outFile ? nochangeWithIncrementalDeclarationFromBeforeExplaination() : nochangeWithIncrementalOutDeclarationFromBeforeExplaination(), + localChange(), + withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), + !options.outFile ? nochangeWithIncrementalDeclarationFromBeforeExplaination() : nochangeWithIncrementalOutDeclarationFromBeforeExplaination(), + withOptionChange("with inlineSourceMap", "--inlineSourceMap"), + withOptionChange("with sourceMap", "--sourceMap"), + noChangeWithSubscenario("emit js files"), + withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), + withOptionChange("with declaration and declarationMap, should not re-emit", "--declaration", "--declarationMap"), + ], + baselinePrograms: true, + }); + } + verify({}); + verify({ outFile: "../outFile.js", module: ts.ModuleKind.AMD }); }); describe("emitDeclarationOnly::", () => { function fs(options: ts.CompilerOptions) { @@ -274,7 +238,7 @@ describe("unittests:: tsbuild:: commandLine::", () => { baselinePrograms: true, }); function subScenario(text: string) { - return `${text}${options.composite ? "" : " with declaration and incremental"}${options.outFile ? " with outFile" : ""}`; + return scenarioName(`${text}${options.composite ? "" : " with declaration and incremental"}`, options); } } verifyWithIncremental({ composite: true }); @@ -282,152 +246,82 @@ describe("unittests:: tsbuild:: commandLine::", () => { verifyWithIncremental({ composite: true, outFile: "../outFile.js", module: ts.ModuleKind.AMD }); verifyWithIncremental({ incremental: true, declaration: true, outFile: "../outFile.js", module: ts.ModuleKind.AMD }); - verifyTsc({ - scenario: "commandLine", - subScenario: "emitDeclarationOnly on commandline with declaration", - fs: () => fs({ declaration: true }), - commandLineArgs: ["--b", "/src/project2/src", "--verbose", "--emitDeclarationOnly"], - edits: [ - noChangeRun, - { - caption: "local change", - edit: fs => appendText(fs, "/src/project1/src/a.ts", "const aa = 10;"), - }, - { - caption: "non local change", - edit: fs => appendText(fs, "/src/project1/src/a.ts", "export const aaa = 10;"), - }, - { - caption: "emit js files", - edit: ts.noop, - commandLineArgs: ["--b", "/src/project2/src", "--verbose"], - }, - noChangeRun, - { - caption: "js emit with change without emitDeclarationOnly", - edit: fs => appendText(fs, "/src/project1/src/b.ts", "const alocal = 10;"), - commandLineArgs: ["--b", "/src/project2/src", "--verbose"], - }, - { - caption: "local change", - edit: fs => appendText(fs, "/src/project1/src/b.ts", "const aaaa = 10;"), - }, - { - caption: "non local change", - edit: fs => appendText(fs, "/src/project1/src/b.ts", "export const aaaaa = 10;"), - }, - { - caption: "js emit with change without emitDeclarationOnly", - edit: fs => appendText(fs, "/src/project1/src/b.ts", "export const a2 = 10;"), - commandLineArgs: ["--b", "/src/project2/src", "--verbose"], - }, - ], - baselinePrograms: true, - }); - - verifyTsc({ - scenario: "commandLine", - subScenario: "emitDeclarationOnly false on commandline with declaration", - fs: () => fs({ declaration: true, emitDeclarationOnly: true }), - commandLineArgs: ["--b", "/src/project2/src", "--verbose"], - edits: [ - noChangeRun, - { - caption: "change", - edit: fs => appendText(fs, "/src/project1/src/a.ts", "const aa = 10;"), - }, - { - caption: "emit js files", - edit: ts.noop, - commandLineArgs: ["--b", "/src/project2/src", "--verbose", "--emitDeclarationOnly", "false"], - }, - noChangeRun, - { - caption: "no change run with js emit", - edit: ts.noop, - commandLineArgs: ["--b", "/src/project2/src", "--verbose", "--emitDeclarationOnly", "false"], - }, - { - caption: "js emit with change", - edit: fs => appendText(fs, "/src/project1/src/b.ts", "const blocal = 10;"), - commandLineArgs: ["--b", "/src/project2/src", "--verbose", "--emitDeclarationOnly", "false"], - }, - ], - baselinePrograms: true, - }); - - verifyTsc({ - scenario: "commandLine", - subScenario: "emitDeclarationOnly on commandline with declaration with outFile", - fs: () => fs({ declaration: true, outFile: "../outFile.js", module: ts.ModuleKind.AMD }), - commandLineArgs: ["--b", "/src/project2/src", "--verbose", "--emitDeclarationOnly"], - edits: [ - noChangeRun, - { - caption: "local change", - edit: fs => appendText(fs, "/src/project1/src/a.ts", "const aa = 10;"), - }, - { - caption: "non local change", - edit: fs => appendText(fs, "/src/project1/src/a.ts", "export const aaa = 10;"), - }, - { - caption: "emit js files", - edit: ts.noop, - commandLineArgs: ["--b", "/src/project2/src", "--verbose"], - }, - noChangeRun, - { - caption: "js emit with change without emitDeclarationOnly", - edit: fs => appendText(fs, "/src/project1/src/b.ts", "const alocal = 10;"), - commandLineArgs: ["--b", "/src/project2/src", "--verbose"], - }, - { - caption: "local change", - edit: fs => appendText(fs, "/src/project1/src/b.ts", "const aaaa = 10;"), - }, - { - caption: "non local change", - edit: fs => appendText(fs, "/src/project1/src/b.ts", "export const aaaaa = 10;"), - }, - { - caption: "js emit with change without emitDeclarationOnly", - edit: fs => appendText(fs, "/src/project1/src/b.ts", "export const a2 = 10;"), - commandLineArgs: ["--b", "/src/project2/src", "--verbose"], - }, - ], - baselinePrograms: true, - }); + function verifyNonIncremental(options: ts.CompilerOptions) { + verifyTsc({ + scenario: "commandLine", + subScenario: scenarioName("emitDeclarationOnly on commandline with declaration", options), + fs: () => fs({ declaration: true, ...options }), + commandLineArgs: ["--b", "/src/project2/src", "--verbose", "--emitDeclarationOnly"], + edits: [ + noChangeRun, + { + caption: "local change", + edit: fs => appendText(fs, "/src/project1/src/a.ts", "const aa = 10;"), + }, + { + caption: "non local change", + edit: fs => appendText(fs, "/src/project1/src/a.ts", "export const aaa = 10;"), + }, + { + caption: "emit js files", + edit: ts.noop, + commandLineArgs: ["--b", "/src/project2/src", "--verbose"], + }, + noChangeRun, + { + caption: "js emit with change without emitDeclarationOnly", + edit: fs => appendText(fs, "/src/project1/src/b.ts", "const alocal = 10;"), + commandLineArgs: ["--b", "/src/project2/src", "--verbose"], + }, + { + caption: "local change", + edit: fs => appendText(fs, "/src/project1/src/b.ts", "const aaaa = 10;"), + }, + { + caption: "non local change", + edit: fs => appendText(fs, "/src/project1/src/b.ts", "export const aaaaa = 10;"), + }, + { + caption: "js emit with change without emitDeclarationOnly", + edit: fs => appendText(fs, "/src/project1/src/b.ts", "export const a2 = 10;"), + commandLineArgs: ["--b", "/src/project2/src", "--verbose"], + }, + ], + baselinePrograms: true, + }); - verifyTsc({ - scenario: "commandLine", - subScenario: "emitDeclarationOnly false on commandline with declaration with outFile", - fs: () => fs({ declaration: true, emitDeclarationOnly: true, outFile: "../outFile.js", module: ts.ModuleKind.AMD }), - commandLineArgs: ["--b", "/src/project2/src", "--verbose"], - edits: [ - noChangeRun, - { - caption: "change", - edit: fs => appendText(fs, "/src/project1/src/a.ts", "const aa = 10;"), - }, - { - caption: "emit js files", - edit: ts.noop, - commandLineArgs: ["--b", "/src/project2/src", "--verbose", "--emitDeclarationOnly", "false"], - }, - noChangeRun, - { - caption: "no change run with js emit", - edit: ts.noop, - commandLineArgs: ["--b", "/src/project2/src", "--verbose", "--emitDeclarationOnly", "false"], - }, - { - caption: "js emit with change", - edit: fs => appendText(fs, "/src/project1/src/b.ts", "const blocal = 10;"), - commandLineArgs: ["--b", "/src/project2/src", "--verbose", "--emitDeclarationOnly", "false"], - }, - ], - baselinePrograms: true, - }); + verifyTsc({ + scenario: "commandLine", + subScenario: scenarioName("emitDeclarationOnly false on commandline with declaration", options), + fs: () => fs({ declaration: true, emitDeclarationOnly: true, ...options }), + commandLineArgs: ["--b", "/src/project2/src", "--verbose"], + edits: [ + noChangeRun, + { + caption: "change", + edit: fs => appendText(fs, "/src/project1/src/a.ts", "const aa = 10;"), + }, + { + caption: "emit js files", + edit: ts.noop, + commandLineArgs: ["--b", "/src/project2/src", "--verbose", "--emitDeclarationOnly", "false"], + }, + noChangeRun, + { + caption: "no change run with js emit", + edit: ts.noop, + commandLineArgs: ["--b", "/src/project2/src", "--verbose", "--emitDeclarationOnly", "false"], + }, + { + caption: "js emit with change", + edit: fs => appendText(fs, "/src/project1/src/b.ts", "const blocal = 10;"), + commandLineArgs: ["--b", "/src/project2/src", "--verbose", "--emitDeclarationOnly", "false"], + }, + ], + baselinePrograms: true, + }); + } + verifyNonIncremental({}); + verifyNonIncremental({ outFile: "../outFile.js", module: ts.ModuleKind.AMD }); }); }); diff --git a/src/testRunner/unittests/tsbuild/configFileErrors.ts b/src/testRunner/unittests/tsbuild/configFileErrors.ts index c33ab9577ede9..f6dc3f27c1c23 100644 --- a/src/testRunner/unittests/tsbuild/configFileErrors.ts +++ b/src/testRunner/unittests/tsbuild/configFileErrors.ts @@ -46,7 +46,7 @@ describe("unittests:: tsbuild:: configFileErrors:: reports syntax errors in conf function verify(outFile?: object) { verifyTsc({ scenario: "configFileErrors", - subScenario: `reports syntax errors in config file${outFile ? " with outFile" : ""}`, + subScenario: `${outFile ? "outFile" : "multiFile"}/reports syntax errors in config file`, fs: () => loadProjectFromFiles({ "/src/a.ts": "export function foo() { }", diff --git a/src/testRunner/unittests/tsbuild/fileDelete.ts b/src/testRunner/unittests/tsbuild/fileDelete.ts index 26b9893303bdd..37a8f5201734d 100644 --- a/src/testRunner/unittests/tsbuild/fileDelete.ts +++ b/src/testRunner/unittests/tsbuild/fileDelete.ts @@ -38,7 +38,7 @@ describe("unittests:: tsbuild:: fileDelete::", () => { verifyTsc({ scenario: "fileDelete", - subScenario: `detects deleted file`, + subScenario: `multiFile/detects deleted file`, commandLineArgs: ["--b", "/src/main/tsconfig.json", "-v", "--traceResolution", "--explainFiles"], fs: () => fs({ composite: true }, { composite: true }), edits: [{ @@ -57,7 +57,7 @@ describe("unittests:: tsbuild:: fileDelete::", () => { verifyTsc({ scenario: "fileDelete", - subScenario: `detects deleted file with outFile`, + subScenario: `outFile/detects deleted file`, commandLineArgs: ["--b", "/src/main/tsconfig.json", "-v", "--traceResolution", "--explainFiles"], fs: () => fs({ composite: true, outFile: "../childResult.js", module: ts.ModuleKind.AMD }, { composite: true, outFile: "../mainResult.js", module: ts.ModuleKind.AMD }), edits: [{ @@ -68,7 +68,7 @@ describe("unittests:: tsbuild:: fileDelete::", () => { verifyTsc({ scenario: "fileDelete", - subScenario: `deleted file without composite`, + subScenario: `multiFile/deleted file without composite`, commandLineArgs: ["--b", "/src/child/tsconfig.json", "-v", "--traceResolution", "--explainFiles"], fs: () => fs({}), edits: [{ @@ -82,7 +82,7 @@ describe("unittests:: tsbuild:: fileDelete::", () => { verifyTsc({ scenario: "fileDelete", - subScenario: `deleted file with outFile without composite`, + subScenario: `outFile/deleted file without composite`, commandLineArgs: ["--b", "/src/child/tsconfig.json", "-v", "--traceResolution", "--explainFiles"], fs: () => fs({ outFile: "../childResult.js", module: ts.ModuleKind.AMD }), edits: [{ diff --git a/src/testRunner/unittests/tsbuild/noEmit.ts b/src/testRunner/unittests/tsbuild/noEmit.ts index dd225b15953f7..6fb62dbaccb79 100644 --- a/src/testRunner/unittests/tsbuild/noEmit.ts +++ b/src/testRunner/unittests/tsbuild/noEmit.ts @@ -6,35 +6,35 @@ import { import { loadProjectFromFiles } from "../helpers/vfs.js"; describe("unittests:: tsbuild:: noEmit", () => { - function verifyNoEmitWorker(subScenario: string, aTsContent: string, commandLineArgs: readonly string[], options?: object) { - verifyTsc({ - scenario: "noEmit", - subScenario, - fs: () => - loadProjectFromFiles({ - "/src/a.ts": aTsContent, - "/src/tsconfig.json": jsonToReadableText({ - compilerOptions: { ...options, noEmit: true }, + function verifyNoEmitWorker(subScenario: string, aTsContent: string, commandLineArgs: readonly string[]) { + [{}, { outFile: "../outFile.js" }].forEach(options => { + verifyTsc({ + scenario: "noEmit", + subScenario: `${options?.outFile ? "outFile" : "multiFile"}/${subScenario}`, + fs: () => + loadProjectFromFiles({ + "/src/a.ts": aTsContent, + "/src/tsconfig.json": jsonToReadableText({ + compilerOptions: { ...options, noEmit: true }, + }), }), - }), - commandLineArgs, - edits: [ - noChangeRun, - { - caption: "Fix error", - edit: fs => fs.writeFileSync("/src/a.ts", `const a = "hello"`), - }, - noChangeRun, - ], - baselinePrograms: true, + commandLineArgs, + edits: [ + noChangeRun, + { + caption: "Fix error", + edit: fs => fs.writeFileSync("/src/a.ts", `const a = "hello"`), + }, + noChangeRun, + ], + baselinePrograms: true, + }); }); } function verifyNoEmit(subScenario: string, aTsContent: string) { verifyNoEmitWorker(subScenario, aTsContent, ["--b", "/src/tsconfig.json", "-v"]); verifyNoEmitWorker(`${subScenario} with incremental`, aTsContent, ["--b", "/src/tsconfig.json", "-v", "--incremental"]); - verifyNoEmitWorker(`${subScenario} with outFile`, aTsContent, ["--b", "/src/tsconfig.json", "-v"], { outFile: "../outFile.js" }); - verifyNoEmitWorker(`${subScenario} with outFile with incremental`, aTsContent, ["--b", "/src/tsconfig.json", "-v", "--incremental"], { outFile: "../outFile.js" }); } verifyNoEmit("syntax errors", `const a = "hello`); diff --git a/src/testRunner/unittests/tsbuildWatch/configFileErrors.ts b/src/testRunner/unittests/tsbuildWatch/configFileErrors.ts index e42977767ac80..5ff75092cecf1 100644 --- a/src/testRunner/unittests/tsbuildWatch/configFileErrors.ts +++ b/src/testRunner/unittests/tsbuildWatch/configFileErrors.ts @@ -10,7 +10,7 @@ describe("unittests:: tsbuildWatch:: watchMode:: configFileErrors:: reports synt function verify(outFile?: object) { verifyTscWatch({ scenario: "configFileErrors", - subScenario: `reports syntax errors in config file${outFile ? " with outFile" : ""}`, + subScenario: `${outFile ? "outFile" : "multiFile"}/reports syntax errors in config file`, sys: () => createWatchedSystem( [ diff --git a/src/testRunner/unittests/tsbuildWatch/noEmit.ts b/src/testRunner/unittests/tsbuildWatch/noEmit.ts index d5712bd681ae0..aca1088a73dab 100644 --- a/src/testRunner/unittests/tsbuildWatch/noEmit.ts +++ b/src/testRunner/unittests/tsbuildWatch/noEmit.ts @@ -10,7 +10,7 @@ describe("unittests:: tsbuildWatch:: watchMode:: with noEmit", () => { function verify(outFile?: object) { verifyTscWatch({ scenario: "noEmit", - subScenario: `does not go in loop when watching when no files are emitted${outFile ? " with outFile" : ""}`, + subScenario: `${outFile ? "outFile" : "multiFile"}/does not go in loop when watching when no files are emitted`, commandLineArgs: ["-b", "-w", "-verbose"], sys: () => createWatchedSystem({ diff --git a/src/testRunner/unittests/tsc/incremental.ts b/src/testRunner/unittests/tsc/incremental.ts index 9d3e8e33076d2..9a535f5415e32 100644 --- a/src/testRunner/unittests/tsc/incremental.ts +++ b/src/testRunner/unittests/tsc/incremental.ts @@ -497,96 +497,65 @@ console.log(a);`, }, }; } - verifyTsc({ - scenario: "incremental", - subScenario: "different options", - fs: () => fs({ composite: true }), - commandLineArgs: ["--p", "/src/project"], - edits: [ - withOptionChange("with sourceMap", "--sourceMap"), - noChangeWithSubscenario("should re-emit only js so they dont contain sourcemap"), - withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"), - noChangeRun, - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - noChangeWithSubscenario("should re-emit only dts so they dont contain sourcemap"), - withOptionChangeAndDiscrepancyExplanation("with emitDeclarationOnly should not emit anything", "--emitDeclarationOnly"), - noChangeRun, - localChange(), - withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"), - withOptionChange("with inlineSourceMap", "--inlineSourceMap"), - withOptionChange("with sourceMap", "--sourceMap"), - enableDeclarationMap(), - withOptionChange("with sourceMap should not emit d.ts", "--sourceMap"), - ], - baselinePrograms: true, - }); - verifyTsc({ - scenario: "incremental", - subScenario: "different options with outFile", - fs: () => fs({ composite: true, outFile: "../outFile.js", module: ts.ModuleKind.AMD }), - commandLineArgs: ["--p", "/src/project"], - edits: [ - withOptionChange("with sourceMap", "--sourceMap"), - noChangeWithSubscenario("should re-emit only js so they dont contain sourcemap"), - withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"), - noChangeRun, - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - noChangeWithSubscenario("should re-emit only dts so they dont contain sourcemap"), - withEmitDeclarationOnlyChangeAndDiscrepancyExplanation("with emitDeclarationOnly should not emit anything"), - noChangeRun, - localChange(), - withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"), - withOptionChange("with inlineSourceMap", "--inlineSourceMap"), - withOptionChange("with sourceMap", "--sourceMap"), - enableDeclarationMap(), - withOptionChange("with sourceMap should not emit d.ts", "--sourceMap"), - ], - baselinePrograms: true, - }); - verifyTsc({ - scenario: "incremental", - subScenario: "different options with incremental", - fs: () => fs({ incremental: true }), - commandLineArgs: ["--p", "/src/project"], - edits: [ - withOptionChange("with sourceMap", "--sourceMap"), - withOptionChange("should re-emit only js so they dont contain sourcemap"), - withOptionChange("with declaration, emit Dts and should not emit js", "--declaration"), - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - nochangeWithIncrementalDeclarationFromBeforeExplaination(), - localChange(), - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - nochangeWithIncrementalDeclarationFromBeforeExplaination(), - withOptionChange("with inlineSourceMap", "--inlineSourceMap"), - withOptionChange("with sourceMap", "--sourceMap"), - noChangeWithSubscenario("emit js files"), - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - withOptionChange("with declaration and declarationMap, should not re-emit", "--declaration", "--declarationMap"), - ], - baselinePrograms: true, - }); - verifyTsc({ - scenario: "incremental", - subScenario: "different options with incremental with outFile", - fs: () => fs({ incremental: true, outFile: "../outFile.js", module: ts.ModuleKind.AMD }), - commandLineArgs: ["--p", "/src/project"], - edits: [ - withOptionChange("with sourceMap", "--sourceMap"), - noChangeWithSubscenario("should re-emit only js so they dont contain sourcemap"), - withOptionChange("with declaration, emit Dts and should not emit js", "--declaration"), - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - nochangeWithIncrementalOutDeclarationFromBeforeExplaination(), - localChange(), - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - nochangeWithIncrementalOutDeclarationFromBeforeExplaination(), - withOptionChange("with inlineSourceMap", "--inlineSourceMap"), - withOptionChange("with sourceMap", "--sourceMap"), - noChangeWithSubscenario("emit js files"), - withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), - withOptionChange("with declaration and declarationMap, should not re-emit", "--declaration", "--declarationMap"), - ], - baselinePrograms: true, - }); + function verify(options: ts.CompilerOptions) { + function scenarioName(text: string) { + return `${options.outFile ? "outFile" : "multiFile"}/${text}`; + } + verifyTsc({ + scenario: "incremental", + subScenario: scenarioName("different options"), + fs: () => fs({ composite: true, ...options }), + commandLineArgs: ["--p", "/src/project"], + edits: [ + withOptionChange("with sourceMap", "--sourceMap"), + noChangeWithSubscenario("should re-emit only js so they dont contain sourcemap"), + withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"), + noChangeRun, + withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), + noChangeWithSubscenario("should re-emit only dts so they dont contain sourcemap"), + !options.outFile ? + withOptionChangeAndDiscrepancyExplanation("with emitDeclarationOnly should not emit anything", "--emitDeclarationOnly") : + withEmitDeclarationOnlyChangeAndDiscrepancyExplanation("with emitDeclarationOnly should not emit anything"), + noChangeRun, + localChange(), + withOptionChangeAndDiscrepancyExplanation("with declaration should not emit anything", "--declaration"), + withOptionChange("with inlineSourceMap", "--inlineSourceMap"), + withOptionChange("with sourceMap", "--sourceMap"), + enableDeclarationMap(), + withOptionChange("with sourceMap should not emit d.ts", "--sourceMap"), + ], + baselinePrograms: true, + }); + verifyTsc({ + scenario: "incremental", + subScenario: scenarioName("different options with incremental"), + fs: () => fs({ incremental: true, ...options }), + commandLineArgs: ["--p", "/src/project"], + edits: [ + withOptionChange("with sourceMap", "--sourceMap"), + noChangeWithSubscenario("should re-emit only js so they dont contain sourcemap"), + withOptionChange("with declaration, emit Dts and should not emit js", "--declaration"), + withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), + !options.outFile ? + nochangeWithIncrementalDeclarationFromBeforeExplaination() : + nochangeWithIncrementalOutDeclarationFromBeforeExplaination(), + localChange(), + withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), + !options.outFile ? + nochangeWithIncrementalDeclarationFromBeforeExplaination() : + nochangeWithIncrementalOutDeclarationFromBeforeExplaination(), + withOptionChange("with inlineSourceMap", "--inlineSourceMap"), + withOptionChange("with sourceMap", "--sourceMap"), + noChangeWithSubscenario("emit js files"), + withOptionChange("with declaration and declarationMap", "--declaration", "--declarationMap"), + withOptionChange("with declaration and declarationMap, should not re-emit", "--declaration", "--declarationMap"), + ], + baselinePrograms: true, + }); + } + + verify({}); + verify({ outFile: "../outFile.js", module: ts.ModuleKind.AMD }); }); verifyTsc({ diff --git a/src/testRunner/unittests/tsc/noEmit.ts b/src/testRunner/unittests/tsc/noEmit.ts index 1040e4d7dc558..b714ed0afe241 100644 --- a/src/testRunner/unittests/tsc/noEmit.ts +++ b/src/testRunner/unittests/tsc/noEmit.ts @@ -1,6 +1,7 @@ import * as ts from "../../_namespaces/ts.js"; import { dedent } from "../../_namespaces/Utils.js"; import { jsonToReadableText } from "../helpers.js"; +import { compilerOptionsToConfigJson } from "../helpers/contents.js"; import { noChangeOnlyRuns, noChangeRun, @@ -16,9 +17,9 @@ describe("unittests:: tsc:: noEmit::", () => { verifyNoEmitChanges({ incremental: true }); verifyNoEmitChanges({ incremental: true, declaration: true }); verifyNoEmitChanges({ composite: true }); - verifyNoEmitChanges({ incremental: true, outFile: "../outFile.js" }); - verifyNoEmitChanges({ incremental: true, declaration: true, outFile: "../outFile.js" }); - verifyNoEmitChanges({ composite: true, outFile: "../outFile.js" }); + verifyNoEmitChanges({ incremental: true, outFile: "../outFile.js", module: ts.ModuleKind.AMD }); + verifyNoEmitChanges({ incremental: true, declaration: true, outFile: "../outFile.js", module: ts.ModuleKind.AMD }); + verifyNoEmitChanges({ composite: true, outFile: "../outFile.js", module: ts.ModuleKind.AMD }); function verifyNoEmitChanges(compilerOptions: ts.CompilerOptions) { const discrepancyExplanation = () => [ @@ -40,14 +41,17 @@ describe("unittests:: tsc:: noEmit::", () => { }; let optionsString = ""; for (const key in compilerOptions) { - if (ts.hasProperty(compilerOptions, key)) { + if (ts.hasProperty(compilerOptions, key) && key !== "outFile" && key !== "module") { optionsString += ` ${key}`; } } + function scenarioName(text: string) { + return `${compilerOptions.outFile ? "outFile" : "multiFile"}/${text}${optionsString}`; + } verifyTsc({ scenario: "noEmit", - subScenario: `changes${optionsString}`, + subScenario: scenarioName("changes"), commandLineArgs: ["--p", "src/project"], fs, edits: [ @@ -94,7 +98,7 @@ describe("unittests:: tsc:: noEmit::", () => { verifyTsc({ scenario: "noEmit", - subScenario: `changes with initial noEmit${optionsString}`, + subScenario: scenarioName("changes with initial noEmit"), commandLineArgs: ["--p", "src/project", "--noEmit"], fs, edits: [ @@ -138,7 +142,9 @@ describe("unittests:: tsc:: noEmit::", () => { "/src/project/src/noChangeFileWithEmitSpecificError.ts": dedent` function someFunc(arguments: boolean, ...rest: any[]) { }`, - "/src/project/tsconfig.json": jsonToReadableText({ compilerOptions }), + "/src/project/tsconfig.json": jsonToReadableText({ + compilerOptions: compilerOptionsToConfigJson(compilerOptions), + }), }); } } diff --git a/src/testRunner/unittests/tsc/noEmitOnError.ts b/src/testRunner/unittests/tsc/noEmitOnError.ts index bf2b320d72a07..9539cff417c2e 100644 --- a/src/testRunner/unittests/tsc/noEmitOnError.ts +++ b/src/testRunner/unittests/tsc/noEmitOnError.ts @@ -69,7 +69,7 @@ const a: string = 10;`, verifyTsc({ scenario: "noEmitOnError", - subScenario: `when declarationMap changes`, + subScenario: `multiFile/when declarationMap changes`, fs: () => loadProjectFromFiles({ "/src/project/tsconfig.json": jsonToReadableText({ @@ -104,7 +104,7 @@ const a: string = 10;`, verifyTsc({ scenario: "noEmitOnError", - subScenario: `when declarationMap changes with outFile`, + subScenario: `outFile/when declarationMap changes`, fs: () => loadProjectFromFiles({ "/src/project/tsconfig.json": jsonToReadableText({ @@ -135,7 +135,7 @@ const a: string = 10;`, verifyTsc({ scenario: "noEmitOnError", - subScenario: "file deleted before fixing error with noEmitOnError", + subScenario: "multiFile/file deleted before fixing error with noEmitOnError", fs: () => loadProjectFromFiles({ "/src/project/tsconfig.json": jsonToReadableText({ @@ -157,7 +157,7 @@ const a: string = 10;`, verifyTsc({ scenario: "noEmitOnError", - subScenario: "file deleted before fixing error with noEmitOnError with outFile", + subScenario: "outFile/file deleted before fixing error with noEmitOnError", fs: () => loadProjectFromFiles({ "/src/project/tsconfig.json": jsonToReadableText({ diff --git a/src/testRunner/unittests/tscWatch/watchApi.ts b/src/testRunner/unittests/tscWatch/watchApi.ts index d49521a5b8478..a09ea9894bd14 100644 --- a/src/testRunner/unittests/tscWatch/watchApi.ts +++ b/src/testRunner/unittests/tscWatch/watchApi.ts @@ -342,10 +342,10 @@ describe("unittests:: tsc-watch:: watchAPI:: when watchHost uses createSemanticD function verify(outFileOptions: ts.CompilerOptions | undefined) { function scenarioName(scenario: string) { - return `${scenario}${outFileOptions ? "with outFile" : ""}`; + return `${outFileOptions ? "outFile" : "multiFile"}/${scenario}`; } function baselineName(baseline: string) { - return `tscWatch/watchApi/${baseline}${outFileOptions ? "-outFile" : ""}.js`; + return `tscWatch/watchApi/${outFileOptions ? "outFile" : "multiFile"}/${baseline}.js`; } it(scenarioName("verifies that noEmit is handled on createSemanticDiagnosticsBuilderProgram and typechecking happens only on affected files"), () => { const { sys, baseline, cb, getPrograms, config, mainFile } = createSystem("{}", "export const x = 10;"); @@ -451,50 +451,50 @@ describe("unittests:: tsc-watch:: watchAPI:: when watchHost uses createSemanticD Harness.Baseline.runBaseline(baselineName("noEmitOnError-with-composite-with-emit-builder"), emitBaseline.join("\r\n")); }); }); - } - verify(/*outFileOptions*/ undefined); - verify({ outFile: "../outFile.js", module: ts.ModuleKind.AMD }); - it("SemanticDiagnosticsBuilderProgram emitDtsOnly does not update affected files pending emit", () => { - // Initial - const { sys, baseline, config, mainFile } = createSystem(jsonToReadableText({ compilerOptions: { composite: true, noEmitOnError: true } }), "export const x: string = 10;"); - createWatch(baseline, config, sys, ts.createSemanticDiagnosticsBuilderProgram); + it(scenarioName("SemanticDiagnosticsBuilderProgram emitDtsOnly does not update affected files pending emit"), () => { + // Initial + const { sys, baseline, config, mainFile } = createSystem(jsonToReadableText({ compilerOptions: { composite: true, noEmitOnError: true, ...outFileOptions ? compilerOptionsToConfigJson(outFileOptions) : undefined } }), "export const x: string = 10;"); + createWatch(baseline, config, sys, ts.createSemanticDiagnosticsBuilderProgram); - // Fix error and emit - applyEdit(sys, baseline, sys => sys.writeFile(mainFile.path, "export const x = 10;"), "Fix error"); + // Fix error and emit + applyEdit(sys, baseline, sys => sys.writeFile(mainFile.path, "export const x = 10;"), "Fix error"); - const { cb, getPrograms } = commandLineCallbacks(sys); - const reportDiagnostic = ts.createDiagnosticReporter(sys, /*pretty*/ true); - const reportWatchStatus = ts.createWatchStatusReporter(sys, /*pretty*/ true); - const host = ts.createWatchCompilerHostOfConfigFile({ - configFileName: config.path, - createProgram: ts.createSemanticDiagnosticsBuilderProgram, - system: sys, - reportDiagnostic, - reportWatchStatus, - }); - host.afterProgramCreate = program => { - const diagnostics = ts.sortAndDeduplicateDiagnostics(program.getSemanticDiagnostics()); - diagnostics.forEach(reportDiagnostic); - // Buildinfo should still have affectedFilesPendingEmit since we are only emitting dts files - program.emit(/*targetSourceFile*/ undefined, /*writeFile*/ undefined, /*cancellationToken*/ undefined, /*emitOnlyDtsFiles*/ true); - reportWatchStatus( - ts.createCompilerDiagnostic(ts.getWatchErrorSummaryDiagnosticMessage(diagnostics.length), diagnostics.length), - sys.newLine, - program.getCompilerOptions(), - diagnostics.length, - ); - cb(program); - }; - ts.createWatchProgram(host); - watchBaseline({ - baseline, - getPrograms, - oldPrograms: ts.emptyArray, - sys, + const { cb, getPrograms } = commandLineCallbacks(sys); + const reportDiagnostic = ts.createDiagnosticReporter(sys, /*pretty*/ true); + const reportWatchStatus = ts.createWatchStatusReporter(sys, /*pretty*/ true); + const host = ts.createWatchCompilerHostOfConfigFile({ + configFileName: config.path, + createProgram: ts.createSemanticDiagnosticsBuilderProgram, + system: sys, + reportDiagnostic, + reportWatchStatus, + }); + host.afterProgramCreate = program => { + const diagnostics = ts.sortAndDeduplicateDiagnostics(program.getSemanticDiagnostics()); + diagnostics.forEach(reportDiagnostic); + // Buildinfo should still have affectedFilesPendingEmit since we are only emitting dts files + program.emit(/*targetSourceFile*/ undefined, /*writeFile*/ undefined, /*cancellationToken*/ undefined, /*emitOnlyDtsFiles*/ true); + reportWatchStatus( + ts.createCompilerDiagnostic(ts.getWatchErrorSummaryDiagnosticMessage(diagnostics.length), diagnostics.length), + sys.newLine, + program.getCompilerOptions(), + diagnostics.length, + ); + cb(program); + }; + ts.createWatchProgram(host); + watchBaseline({ + baseline, + getPrograms, + oldPrograms: ts.emptyArray, + sys, + }); + Harness.Baseline.runBaseline(baselineName("semantic-builder-emitOnlyDts"), baseline.join("\r\n")); }); - Harness.Baseline.runBaseline(`tscWatch/watchApi/semantic-builder-emitOnlyDts.js`, baseline.join("\r\n")); - }); + } + verify(/*outFileOptions*/ undefined); + verify({ outFile: "../outFile.js", module: ts.ModuleKind.AMD }); }); describe("unittests:: tsc-watch:: watchAPI:: when getParsedCommandLine is implemented", () => { @@ -722,8 +722,8 @@ describe("unittests:: tsc-watch:: watchAPI:: when builder emit occurs with emitO } }); } - verify("when emitting with emitOnlyDtsFiles"); - verify("when emitting with emitOnlyDtsFiles with outFile", "outFile.js"); + verify("multiFile/when emitting with emitOnlyDtsFiles"); + verify("outFile/when emitting with emitOnlyDtsFiles", "outFile.js"); }); describe("unittests:: tsc-watch:: watchAPI:: when creating program with project references but not config file", () => { diff --git a/tests/baselines/reference/tsbuild/commandLine/different-options-discrepancies.js b/tests/baselines/reference/tsbuild/commandLine/multiFile/different-options-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/different-options-discrepancies.js rename to tests/baselines/reference/tsbuild/commandLine/multiFile/different-options-discrepancies.js diff --git a/tests/baselines/reference/tsbuild/commandLine/different-options-with-incremental-discrepancies.js b/tests/baselines/reference/tsbuild/commandLine/multiFile/different-options-with-incremental-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/different-options-with-incremental-discrepancies.js rename to tests/baselines/reference/tsbuild/commandLine/multiFile/different-options-with-incremental-discrepancies.js diff --git a/tests/baselines/reference/tsbuild/commandLine/different-options-with-incremental.js b/tests/baselines/reference/tsbuild/commandLine/multiFile/different-options-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/different-options-with-incremental.js rename to tests/baselines/reference/tsbuild/commandLine/multiFile/different-options-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/commandLine/different-options.js b/tests/baselines/reference/tsbuild/commandLine/multiFile/different-options.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/different-options.js rename to tests/baselines/reference/tsbuild/commandLine/multiFile/different-options.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-discrepancies.js b/tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-false-on-commandline-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-discrepancies.js rename to tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-false-on-commandline-discrepancies.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental-discrepancies.js b/tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental-discrepancies.js rename to tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental-discrepancies.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental.js b/tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental.js rename to tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-declaration.js b/tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-false-on-commandline-with-declaration.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-declaration.js rename to tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-false-on-commandline-with-declaration.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline.js b/tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-false-on-commandline.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline.js rename to tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-false-on-commandline.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-discrepancies.js b/tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-on-commandline-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-discrepancies.js rename to tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-on-commandline-discrepancies.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-declaration-and-incremental-discrepancies.js b/tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-on-commandline-with-declaration-and-incremental-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-declaration-and-incremental-discrepancies.js rename to tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-on-commandline-with-declaration-and-incremental-discrepancies.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-declaration-and-incremental.js b/tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-on-commandline-with-declaration-and-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-declaration-and-incremental.js rename to tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-on-commandline-with-declaration-and-incremental.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-declaration.js b/tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-on-commandline-with-declaration.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-declaration.js rename to tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-on-commandline-with-declaration.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline.js b/tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-on-commandline.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline.js rename to tests/baselines/reference/tsbuild/commandLine/multiFile/emitDeclarationOnly-on-commandline.js diff --git a/tests/baselines/reference/tsc/incremental/different-options-with-outFile-discrepancies.js b/tests/baselines/reference/tsbuild/commandLine/outFile/different-options-discrepancies.js similarity index 98% rename from tests/baselines/reference/tsc/incremental/different-options-with-outFile-discrepancies.js rename to tests/baselines/reference/tsbuild/commandLine/outFile/different-options-discrepancies.js index 4467e4ae0572e..74bd90f20a2f2 100644 --- a/tests/baselines/reference/tsc/incremental/different-options-with-outFile-discrepancies.js +++ b/tests/baselines/reference/tsbuild/commandLine/outFile/different-options-discrepancies.js @@ -104,8 +104,6 @@ IncrementalBuild: 6:: with emitDeclarationOnly should not emit anything Clean build tsbuildinfo will have compilerOptions with composite and emitDeclarationOnly Incremental build will detect that it doesnt need to rebuild so tsbuild info is from before which has option composite only -Clean build info does not have js section because its fresh build -Incremental build info has js section from old build TsBuild info text without affectedFilesPendingEmit:: /src/outfile.tsbuildinfo.readable.baseline.txt:: CleanBuild: { @@ -206,9 +204,11 @@ IncrementalBuild: }, "version": "FakeTSVersion" } -9:: with declaration should not emit anything -Clean build tsbuildinfo will have compilerOptions with composite and declaration +9:: with emitDeclarationOnly should not emit anything +Clean build tsbuildinfo will have compilerOptions with composite and emitDeclarationOnly Incremental build will detect that it doesnt need to rebuild so tsbuild info is from before which has option composite only +Clean build info does not have js section because its fresh build +Incremental build info has js section from old build TsBuild info text without affectedFilesPendingEmit:: /src/outfile.tsbuildinfo.readable.baseline.txt:: CleanBuild: { @@ -251,7 +251,7 @@ CleanBuild: ], "options": { "composite": true, - "declaration": true, + "emitDeclarationOnly": true, "module": 2, "outFile": "./outFile.js" }, diff --git a/tests/baselines/reference/tsbuild/commandLine/different-options-with-incremental-with-outFile-discrepancies.js b/tests/baselines/reference/tsbuild/commandLine/outFile/different-options-with-incremental-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/different-options-with-incremental-with-outFile-discrepancies.js rename to tests/baselines/reference/tsbuild/commandLine/outFile/different-options-with-incremental-discrepancies.js diff --git a/tests/baselines/reference/tsbuild/commandLine/different-options-with-incremental-with-outFile.js b/tests/baselines/reference/tsbuild/commandLine/outFile/different-options-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/different-options-with-incremental-with-outFile.js rename to tests/baselines/reference/tsbuild/commandLine/outFile/different-options-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/commandLine/different-options-with-outFile.js b/tests/baselines/reference/tsbuild/commandLine/outFile/different-options.js similarity index 99% rename from tests/baselines/reference/tsbuild/commandLine/different-options-with-outFile.js rename to tests/baselines/reference/tsbuild/commandLine/outFile/different-options.js index 8bb5a4e497042..e6e36a6e9e5cd 100644 --- a/tests/baselines/reference/tsbuild/commandLine/different-options-with-outFile.js +++ b/tests/baselines/reference/tsbuild/commandLine/outFile/different-options.js @@ -1006,12 +1006,12 @@ define("d", ["require", "exports", "b"], function (require, exports, b_1) { -Change:: with declaration should not emit anything +Change:: with emitDeclarationOnly should not emit anything Input:: Output:: -/lib/tsc --b /src/project --verbose --declaration +/lib/tsc --b /src/project --verbose --emitDeclarationOnly [HH:MM:SS AM] Projects in this build: * src/project/tsconfig.json diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-outFile-discrepancies.js b/tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-false-on-commandline-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-outFile-discrepancies.js rename to tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-false-on-commandline-discrepancies.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental-with-outFile-discrepancies.js b/tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental-with-outFile-discrepancies.js rename to tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental-discrepancies.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental-with-outFile.js b/tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental-with-outFile.js rename to tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-false-on-commandline-with-declaration-and-incremental.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-declaration-with-outFile.js b/tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-false-on-commandline-with-declaration.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-declaration-with-outFile.js rename to tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-false-on-commandline-with-declaration.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-outFile.js b/tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-false-on-commandline.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-false-on-commandline-with-outFile.js rename to tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-false-on-commandline.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-outFile-discrepancies.js b/tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-on-commandline-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-outFile-discrepancies.js rename to tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-on-commandline-discrepancies.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-declaration-and-incremental-with-outFile-discrepancies.js b/tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-on-commandline-with-declaration-and-incremental-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-declaration-and-incremental-with-outFile-discrepancies.js rename to tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-on-commandline-with-declaration-and-incremental-discrepancies.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-declaration-and-incremental-with-outFile.js b/tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-on-commandline-with-declaration-and-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-declaration-and-incremental-with-outFile.js rename to tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-on-commandline-with-declaration-and-incremental.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-declaration-with-outFile.js b/tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-on-commandline-with-declaration.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-declaration-with-outFile.js rename to tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-on-commandline-with-declaration.js diff --git a/tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-outFile.js b/tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-on-commandline.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/emitDeclarationOnly-on-commandline-with-outFile.js rename to tests/baselines/reference/tsbuild/commandLine/outFile/emitDeclarationOnly-on-commandline.js diff --git a/tests/baselines/reference/tsbuild/configFileErrors/reports-syntax-errors-in-config-file-discrepancies.js b/tests/baselines/reference/tsbuild/configFileErrors/multiFile/reports-syntax-errors-in-config-file-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsbuild/configFileErrors/reports-syntax-errors-in-config-file-discrepancies.js rename to tests/baselines/reference/tsbuild/configFileErrors/multiFile/reports-syntax-errors-in-config-file-discrepancies.js diff --git a/tests/baselines/reference/tsbuild/configFileErrors/reports-syntax-errors-in-config-file.js b/tests/baselines/reference/tsbuild/configFileErrors/multiFile/reports-syntax-errors-in-config-file.js similarity index 100% rename from tests/baselines/reference/tsbuild/configFileErrors/reports-syntax-errors-in-config-file.js rename to tests/baselines/reference/tsbuild/configFileErrors/multiFile/reports-syntax-errors-in-config-file.js diff --git a/tests/baselines/reference/tsbuild/configFileErrors/reports-syntax-errors-in-config-file-with-outFile.js b/tests/baselines/reference/tsbuild/configFileErrors/outFile/reports-syntax-errors-in-config-file.js similarity index 100% rename from tests/baselines/reference/tsbuild/configFileErrors/reports-syntax-errors-in-config-file-with-outFile.js rename to tests/baselines/reference/tsbuild/configFileErrors/outFile/reports-syntax-errors-in-config-file.js diff --git a/tests/baselines/reference/tsbuild/declarationEmit/reports-dts-generation-errors-with-incremental.js b/tests/baselines/reference/tsbuild/declarationEmit/multiFile/reports-dts-generation-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/declarationEmit/reports-dts-generation-errors-with-incremental.js rename to tests/baselines/reference/tsbuild/declarationEmit/multiFile/reports-dts-generation-errors-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/declarationEmit/reports-dts-generation-errors.js b/tests/baselines/reference/tsbuild/declarationEmit/multiFile/reports-dts-generation-errors.js similarity index 100% rename from tests/baselines/reference/tsbuild/declarationEmit/reports-dts-generation-errors.js rename to tests/baselines/reference/tsbuild/declarationEmit/multiFile/reports-dts-generation-errors.js diff --git a/tests/baselines/reference/tsbuild/declarationEmit/reports-dts-generation-errors-outFile-with-incremental.js b/tests/baselines/reference/tsbuild/declarationEmit/outFile/reports-dts-generation-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/declarationEmit/reports-dts-generation-errors-outFile-with-incremental.js rename to tests/baselines/reference/tsbuild/declarationEmit/outFile/reports-dts-generation-errors-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/declarationEmit/reports-dts-generation-errors-outFile.js b/tests/baselines/reference/tsbuild/declarationEmit/outFile/reports-dts-generation-errors.js similarity index 100% rename from tests/baselines/reference/tsbuild/declarationEmit/reports-dts-generation-errors-outFile.js rename to tests/baselines/reference/tsbuild/declarationEmit/outFile/reports-dts-generation-errors.js diff --git a/tests/baselines/reference/tsbuild/fileDelete/deleted-file-without-composite.js b/tests/baselines/reference/tsbuild/fileDelete/multiFile/deleted-file-without-composite.js similarity index 100% rename from tests/baselines/reference/tsbuild/fileDelete/deleted-file-without-composite.js rename to tests/baselines/reference/tsbuild/fileDelete/multiFile/deleted-file-without-composite.js diff --git a/tests/baselines/reference/tsbuild/fileDelete/detects-deleted-file-discrepancies.js b/tests/baselines/reference/tsbuild/fileDelete/multiFile/detects-deleted-file-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsbuild/fileDelete/detects-deleted-file-discrepancies.js rename to tests/baselines/reference/tsbuild/fileDelete/multiFile/detects-deleted-file-discrepancies.js diff --git a/tests/baselines/reference/tsbuild/fileDelete/detects-deleted-file.js b/tests/baselines/reference/tsbuild/fileDelete/multiFile/detects-deleted-file.js similarity index 100% rename from tests/baselines/reference/tsbuild/fileDelete/detects-deleted-file.js rename to tests/baselines/reference/tsbuild/fileDelete/multiFile/detects-deleted-file.js diff --git a/tests/baselines/reference/tsbuild/fileDelete/deleted-file-with-outFile-without-composite.js b/tests/baselines/reference/tsbuild/fileDelete/outFile/deleted-file-without-composite.js similarity index 100% rename from tests/baselines/reference/tsbuild/fileDelete/deleted-file-with-outFile-without-composite.js rename to tests/baselines/reference/tsbuild/fileDelete/outFile/deleted-file-without-composite.js diff --git a/tests/baselines/reference/tsbuild/fileDelete/detects-deleted-file-with-outFile.js b/tests/baselines/reference/tsbuild/fileDelete/outFile/detects-deleted-file.js similarity index 100% rename from tests/baselines/reference/tsbuild/fileDelete/detects-deleted-file-with-outFile.js rename to tests/baselines/reference/tsbuild/fileDelete/outFile/detects-deleted-file.js diff --git a/tests/baselines/reference/tsbuild/noEmit/semantic-errors-with-incremental.js b/tests/baselines/reference/tsbuild/noEmit/multiFile/semantic-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmit/semantic-errors-with-incremental.js rename to tests/baselines/reference/tsbuild/noEmit/multiFile/semantic-errors-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/noEmit/semantic-errors.js b/tests/baselines/reference/tsbuild/noEmit/multiFile/semantic-errors.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmit/semantic-errors.js rename to tests/baselines/reference/tsbuild/noEmit/multiFile/semantic-errors.js diff --git a/tests/baselines/reference/tsbuild/noEmit/syntax-errors-with-incremental.js b/tests/baselines/reference/tsbuild/noEmit/multiFile/syntax-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmit/syntax-errors-with-incremental.js rename to tests/baselines/reference/tsbuild/noEmit/multiFile/syntax-errors-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/noEmit/syntax-errors.js b/tests/baselines/reference/tsbuild/noEmit/multiFile/syntax-errors.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmit/syntax-errors.js rename to tests/baselines/reference/tsbuild/noEmit/multiFile/syntax-errors.js diff --git a/tests/baselines/reference/tsbuild/noEmit/semantic-errors-with-outFile-with-incremental.js b/tests/baselines/reference/tsbuild/noEmit/outFile/semantic-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmit/semantic-errors-with-outFile-with-incremental.js rename to tests/baselines/reference/tsbuild/noEmit/outFile/semantic-errors-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/noEmit/semantic-errors-with-outFile.js b/tests/baselines/reference/tsbuild/noEmit/outFile/semantic-errors.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmit/semantic-errors-with-outFile.js rename to tests/baselines/reference/tsbuild/noEmit/outFile/semantic-errors.js diff --git a/tests/baselines/reference/tsbuild/noEmit/syntax-errors-with-outFile-with-incremental.js b/tests/baselines/reference/tsbuild/noEmit/outFile/syntax-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmit/syntax-errors-with-outFile-with-incremental.js rename to tests/baselines/reference/tsbuild/noEmit/outFile/syntax-errors-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/noEmit/syntax-errors-with-outFile.js b/tests/baselines/reference/tsbuild/noEmit/outFile/syntax-errors.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmit/syntax-errors-with-outFile.js rename to tests/baselines/reference/tsbuild/noEmit/outFile/syntax-errors.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors-with-declaration-with-incremental.js b/tests/baselines/reference/tsbuild/noEmitOnError/multiFile/semantic-errors-with-declaration-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors-with-declaration-with-incremental.js rename to tests/baselines/reference/tsbuild/noEmitOnError/multiFile/semantic-errors-with-declaration-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors-with-declaration.js b/tests/baselines/reference/tsbuild/noEmitOnError/multiFile/semantic-errors-with-declaration.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors-with-declaration.js rename to tests/baselines/reference/tsbuild/noEmitOnError/multiFile/semantic-errors-with-declaration.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors-with-incremental.js b/tests/baselines/reference/tsbuild/noEmitOnError/multiFile/semantic-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors-with-incremental.js rename to tests/baselines/reference/tsbuild/noEmitOnError/multiFile/semantic-errors-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors.js b/tests/baselines/reference/tsbuild/noEmitOnError/multiFile/semantic-errors.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors.js rename to tests/baselines/reference/tsbuild/noEmitOnError/multiFile/semantic-errors.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors-with-declaration-with-incremental.js b/tests/baselines/reference/tsbuild/noEmitOnError/multiFile/syntax-errors-with-declaration-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors-with-declaration-with-incremental.js rename to tests/baselines/reference/tsbuild/noEmitOnError/multiFile/syntax-errors-with-declaration-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors-with-declaration.js b/tests/baselines/reference/tsbuild/noEmitOnError/multiFile/syntax-errors-with-declaration.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors-with-declaration.js rename to tests/baselines/reference/tsbuild/noEmitOnError/multiFile/syntax-errors-with-declaration.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors-with-incremental.js b/tests/baselines/reference/tsbuild/noEmitOnError/multiFile/syntax-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors-with-incremental.js rename to tests/baselines/reference/tsbuild/noEmitOnError/multiFile/syntax-errors-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors.js b/tests/baselines/reference/tsbuild/noEmitOnError/multiFile/syntax-errors.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors.js rename to tests/baselines/reference/tsbuild/noEmitOnError/multiFile/syntax-errors.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors-outFile-with-declaration-with-incremental.js b/tests/baselines/reference/tsbuild/noEmitOnError/outFile/semantic-errors-with-declaration-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors-outFile-with-declaration-with-incremental.js rename to tests/baselines/reference/tsbuild/noEmitOnError/outFile/semantic-errors-with-declaration-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors-outFile-with-declaration.js b/tests/baselines/reference/tsbuild/noEmitOnError/outFile/semantic-errors-with-declaration.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors-outFile-with-declaration.js rename to tests/baselines/reference/tsbuild/noEmitOnError/outFile/semantic-errors-with-declaration.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors-outFile-with-incremental.js b/tests/baselines/reference/tsbuild/noEmitOnError/outFile/semantic-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors-outFile-with-incremental.js rename to tests/baselines/reference/tsbuild/noEmitOnError/outFile/semantic-errors-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors-outFile.js b/tests/baselines/reference/tsbuild/noEmitOnError/outFile/semantic-errors.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/semantic-errors-outFile.js rename to tests/baselines/reference/tsbuild/noEmitOnError/outFile/semantic-errors.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors-outFile-with-declaration-with-incremental.js b/tests/baselines/reference/tsbuild/noEmitOnError/outFile/syntax-errors-with-declaration-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors-outFile-with-declaration-with-incremental.js rename to tests/baselines/reference/tsbuild/noEmitOnError/outFile/syntax-errors-with-declaration-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors-outFile-with-declaration.js b/tests/baselines/reference/tsbuild/noEmitOnError/outFile/syntax-errors-with-declaration.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors-outFile-with-declaration.js rename to tests/baselines/reference/tsbuild/noEmitOnError/outFile/syntax-errors-with-declaration.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors-outFile-with-incremental.js b/tests/baselines/reference/tsbuild/noEmitOnError/outFile/syntax-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors-outFile-with-incremental.js rename to tests/baselines/reference/tsbuild/noEmitOnError/outFile/syntax-errors-with-incremental.js diff --git a/tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors-outFile.js b/tests/baselines/reference/tsbuild/noEmitOnError/outFile/syntax-errors.js similarity index 100% rename from tests/baselines/reference/tsbuild/noEmitOnError/syntax-errors-outFile.js rename to tests/baselines/reference/tsbuild/noEmitOnError/outFile/syntax-errors.js diff --git a/tests/baselines/reference/tsbuildWatch/configFileErrors/reports-syntax-errors-in-config-file.js b/tests/baselines/reference/tsbuildWatch/configFileErrors/multiFile/reports-syntax-errors-in-config-file.js similarity index 100% rename from tests/baselines/reference/tsbuildWatch/configFileErrors/reports-syntax-errors-in-config-file.js rename to tests/baselines/reference/tsbuildWatch/configFileErrors/multiFile/reports-syntax-errors-in-config-file.js diff --git a/tests/baselines/reference/tsbuildWatch/configFileErrors/reports-syntax-errors-in-config-file-with-outFile.js b/tests/baselines/reference/tsbuildWatch/configFileErrors/outFile/reports-syntax-errors-in-config-file.js similarity index 100% rename from tests/baselines/reference/tsbuildWatch/configFileErrors/reports-syntax-errors-in-config-file-with-outFile.js rename to tests/baselines/reference/tsbuildWatch/configFileErrors/outFile/reports-syntax-errors-in-config-file.js diff --git a/tests/baselines/reference/tsbuildWatch/noEmit/does-not-go-in-loop-when-watching-when-no-files-are-emitted-with-incremental.js b/tests/baselines/reference/tsbuildWatch/noEmit/multiFile/does-not-go-in-loop-when-watching-when-no-files-are-emitted-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuildWatch/noEmit/does-not-go-in-loop-when-watching-when-no-files-are-emitted-with-incremental.js rename to tests/baselines/reference/tsbuildWatch/noEmit/multiFile/does-not-go-in-loop-when-watching-when-no-files-are-emitted-with-incremental.js diff --git a/tests/baselines/reference/tsbuildWatch/noEmit/does-not-go-in-loop-when-watching-when-no-files-are-emitted.js b/tests/baselines/reference/tsbuildWatch/noEmit/multiFile/does-not-go-in-loop-when-watching-when-no-files-are-emitted.js similarity index 100% rename from tests/baselines/reference/tsbuildWatch/noEmit/does-not-go-in-loop-when-watching-when-no-files-are-emitted.js rename to tests/baselines/reference/tsbuildWatch/noEmit/multiFile/does-not-go-in-loop-when-watching-when-no-files-are-emitted.js diff --git a/tests/baselines/reference/tsbuildWatch/noEmit/does-not-go-in-loop-when-watching-when-no-files-are-emitted-with-outFile-with-incremental.js b/tests/baselines/reference/tsbuildWatch/noEmit/outFile/does-not-go-in-loop-when-watching-when-no-files-are-emitted-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuildWatch/noEmit/does-not-go-in-loop-when-watching-when-no-files-are-emitted-with-outFile-with-incremental.js rename to tests/baselines/reference/tsbuildWatch/noEmit/outFile/does-not-go-in-loop-when-watching-when-no-files-are-emitted-with-incremental.js diff --git a/tests/baselines/reference/tsbuildWatch/noEmit/does-not-go-in-loop-when-watching-when-no-files-are-emitted-with-outFile.js b/tests/baselines/reference/tsbuildWatch/noEmit/outFile/does-not-go-in-loop-when-watching-when-no-files-are-emitted.js similarity index 100% rename from tests/baselines/reference/tsbuildWatch/noEmit/does-not-go-in-loop-when-watching-when-no-files-are-emitted-with-outFile.js rename to tests/baselines/reference/tsbuildWatch/noEmit/outFile/does-not-go-in-loop-when-watching-when-no-files-are-emitted.js diff --git a/tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error-with-declaration-with-incremental.js b/tests/baselines/reference/tsbuildWatch/noEmitOnError/multiFile/does-not-emit-any-files-on-error-with-declaration-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error-with-declaration-with-incremental.js rename to tests/baselines/reference/tsbuildWatch/noEmitOnError/multiFile/does-not-emit-any-files-on-error-with-declaration-with-incremental.js diff --git a/tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error-with-declaration.js b/tests/baselines/reference/tsbuildWatch/noEmitOnError/multiFile/does-not-emit-any-files-on-error-with-declaration.js similarity index 100% rename from tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error-with-declaration.js rename to tests/baselines/reference/tsbuildWatch/noEmitOnError/multiFile/does-not-emit-any-files-on-error-with-declaration.js diff --git a/tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error-with-incremental.js b/tests/baselines/reference/tsbuildWatch/noEmitOnError/multiFile/does-not-emit-any-files-on-error-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error-with-incremental.js rename to tests/baselines/reference/tsbuildWatch/noEmitOnError/multiFile/does-not-emit-any-files-on-error-with-incremental.js diff --git a/tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error.js b/tests/baselines/reference/tsbuildWatch/noEmitOnError/multiFile/does-not-emit-any-files-on-error.js similarity index 100% rename from tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error.js rename to tests/baselines/reference/tsbuildWatch/noEmitOnError/multiFile/does-not-emit-any-files-on-error.js diff --git a/tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error-outFile-with-declaration-with-incremental.js b/tests/baselines/reference/tsbuildWatch/noEmitOnError/outFile/does-not-emit-any-files-on-error-with-declaration-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error-outFile-with-declaration-with-incremental.js rename to tests/baselines/reference/tsbuildWatch/noEmitOnError/outFile/does-not-emit-any-files-on-error-with-declaration-with-incremental.js diff --git a/tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error-outFile-with-declaration.js b/tests/baselines/reference/tsbuildWatch/noEmitOnError/outFile/does-not-emit-any-files-on-error-with-declaration.js similarity index 100% rename from tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error-outFile-with-declaration.js rename to tests/baselines/reference/tsbuildWatch/noEmitOnError/outFile/does-not-emit-any-files-on-error-with-declaration.js diff --git a/tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error-outFile-with-incremental.js b/tests/baselines/reference/tsbuildWatch/noEmitOnError/outFile/does-not-emit-any-files-on-error-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error-outFile-with-incremental.js rename to tests/baselines/reference/tsbuildWatch/noEmitOnError/outFile/does-not-emit-any-files-on-error-with-incremental.js diff --git a/tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error-outFile.js b/tests/baselines/reference/tsbuildWatch/noEmitOnError/outFile/does-not-emit-any-files-on-error.js similarity index 100% rename from tests/baselines/reference/tsbuildWatch/noEmitOnError/does-not-emit-any-files-on-error-outFile.js rename to tests/baselines/reference/tsbuildWatch/noEmitOnError/outFile/does-not-emit-any-files-on-error.js diff --git a/tests/baselines/reference/tsc/declarationEmit/reports-dts-generation-errors-with-incremental.js b/tests/baselines/reference/tsc/declarationEmit/multiFile/reports-dts-generation-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsc/declarationEmit/reports-dts-generation-errors-with-incremental.js rename to tests/baselines/reference/tsc/declarationEmit/multiFile/reports-dts-generation-errors-with-incremental.js diff --git a/tests/baselines/reference/tsc/declarationEmit/reports-dts-generation-errors.js b/tests/baselines/reference/tsc/declarationEmit/multiFile/reports-dts-generation-errors.js similarity index 100% rename from tests/baselines/reference/tsc/declarationEmit/reports-dts-generation-errors.js rename to tests/baselines/reference/tsc/declarationEmit/multiFile/reports-dts-generation-errors.js diff --git a/tests/baselines/reference/tsc/declarationEmit/reports-dts-generation-errors-outFile-with-incremental.js b/tests/baselines/reference/tsc/declarationEmit/outFile/reports-dts-generation-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsc/declarationEmit/reports-dts-generation-errors-outFile-with-incremental.js rename to tests/baselines/reference/tsc/declarationEmit/outFile/reports-dts-generation-errors-with-incremental.js diff --git a/tests/baselines/reference/tsc/declarationEmit/reports-dts-generation-errors-outFile.js b/tests/baselines/reference/tsc/declarationEmit/outFile/reports-dts-generation-errors.js similarity index 100% rename from tests/baselines/reference/tsc/declarationEmit/reports-dts-generation-errors-outFile.js rename to tests/baselines/reference/tsc/declarationEmit/outFile/reports-dts-generation-errors.js diff --git a/tests/baselines/reference/tsc/incremental/different-options-discrepancies.js b/tests/baselines/reference/tsc/incremental/multiFile/different-options-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsc/incremental/different-options-discrepancies.js rename to tests/baselines/reference/tsc/incremental/multiFile/different-options-discrepancies.js diff --git a/tests/baselines/reference/tsc/incremental/different-options-with-incremental-discrepancies.js b/tests/baselines/reference/tsc/incremental/multiFile/different-options-with-incremental-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsc/incremental/different-options-with-incremental-discrepancies.js rename to tests/baselines/reference/tsc/incremental/multiFile/different-options-with-incremental-discrepancies.js diff --git a/tests/baselines/reference/tsc/incremental/different-options-with-incremental.js b/tests/baselines/reference/tsc/incremental/multiFile/different-options-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsc/incremental/different-options-with-incremental.js rename to tests/baselines/reference/tsc/incremental/multiFile/different-options-with-incremental.js diff --git a/tests/baselines/reference/tsc/incremental/different-options.js b/tests/baselines/reference/tsc/incremental/multiFile/different-options.js similarity index 100% rename from tests/baselines/reference/tsc/incremental/different-options.js rename to tests/baselines/reference/tsc/incremental/multiFile/different-options.js diff --git a/tests/baselines/reference/tsbuild/commandLine/different-options-with-outFile-discrepancies.js b/tests/baselines/reference/tsc/incremental/outFile/different-options-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsbuild/commandLine/different-options-with-outFile-discrepancies.js rename to tests/baselines/reference/tsc/incremental/outFile/different-options-discrepancies.js diff --git a/tests/baselines/reference/tsc/incremental/different-options-with-incremental-with-outFile-discrepancies.js b/tests/baselines/reference/tsc/incremental/outFile/different-options-with-incremental-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsc/incremental/different-options-with-incremental-with-outFile-discrepancies.js rename to tests/baselines/reference/tsc/incremental/outFile/different-options-with-incremental-discrepancies.js diff --git a/tests/baselines/reference/tsc/incremental/different-options-with-incremental-with-outFile.js b/tests/baselines/reference/tsc/incremental/outFile/different-options-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsc/incremental/different-options-with-incremental-with-outFile.js rename to tests/baselines/reference/tsc/incremental/outFile/different-options-with-incremental.js diff --git a/tests/baselines/reference/tsc/incremental/different-options-with-outFile.js b/tests/baselines/reference/tsc/incremental/outFile/different-options.js similarity index 100% rename from tests/baselines/reference/tsc/incremental/different-options-with-outFile.js rename to tests/baselines/reference/tsc/incremental/outFile/different-options.js diff --git a/tests/baselines/reference/tsc/noEmit/changes-composite-discrepancies.js b/tests/baselines/reference/tsc/noEmit/multiFile/changes-composite-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsc/noEmit/changes-composite-discrepancies.js rename to tests/baselines/reference/tsc/noEmit/multiFile/changes-composite-discrepancies.js diff --git a/tests/baselines/reference/tsc/noEmit/changes-composite.js b/tests/baselines/reference/tsc/noEmit/multiFile/changes-composite.js similarity index 100% rename from tests/baselines/reference/tsc/noEmit/changes-composite.js rename to tests/baselines/reference/tsc/noEmit/multiFile/changes-composite.js diff --git a/tests/baselines/reference/tsc/noEmit/changes-incremental-declaration.js b/tests/baselines/reference/tsc/noEmit/multiFile/changes-incremental-declaration.js similarity index 100% rename from tests/baselines/reference/tsc/noEmit/changes-incremental-declaration.js rename to tests/baselines/reference/tsc/noEmit/multiFile/changes-incremental-declaration.js diff --git a/tests/baselines/reference/tsc/noEmit/changes-incremental.js b/tests/baselines/reference/tsc/noEmit/multiFile/changes-incremental.js similarity index 100% rename from tests/baselines/reference/tsc/noEmit/changes-incremental.js rename to tests/baselines/reference/tsc/noEmit/multiFile/changes-incremental.js diff --git a/tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-composite-discrepancies.js b/tests/baselines/reference/tsc/noEmit/multiFile/changes-with-initial-noEmit-composite-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-composite-discrepancies.js rename to tests/baselines/reference/tsc/noEmit/multiFile/changes-with-initial-noEmit-composite-discrepancies.js diff --git a/tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-composite.js b/tests/baselines/reference/tsc/noEmit/multiFile/changes-with-initial-noEmit-composite.js similarity index 100% rename from tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-composite.js rename to tests/baselines/reference/tsc/noEmit/multiFile/changes-with-initial-noEmit-composite.js diff --git a/tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-incremental-declaration.js b/tests/baselines/reference/tsc/noEmit/multiFile/changes-with-initial-noEmit-incremental-declaration.js similarity index 100% rename from tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-incremental-declaration.js rename to tests/baselines/reference/tsc/noEmit/multiFile/changes-with-initial-noEmit-incremental-declaration.js diff --git a/tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-incremental.js b/tests/baselines/reference/tsc/noEmit/multiFile/changes-with-initial-noEmit-incremental.js similarity index 100% rename from tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-incremental.js rename to tests/baselines/reference/tsc/noEmit/multiFile/changes-with-initial-noEmit-incremental.js diff --git a/tests/baselines/reference/tsc/noEmit/changes-composite-outFile.js b/tests/baselines/reference/tsc/noEmit/outFile/changes-composite.js similarity index 72% rename from tests/baselines/reference/tsc/noEmit/changes-composite-outFile.js rename to tests/baselines/reference/tsc/noEmit/outFile/changes-composite.js index fbc5e7da510ea..04b49237c6e55 100644 --- a/tests/baselines/reference/tsc/noEmit/changes-composite-outFile.js +++ b/tests/baselines/reference/tsc/noEmit/outFile/changes-composite.js @@ -46,7 +46,8 @@ function someFunc(arguments: boolean, ...rest: any[]) { { "compilerOptions": { "composite": true, - "outFile": "../outFile.js" + "outFile": "../outFile.js", + "module": "amd" } } @@ -54,30 +55,79 @@ function someFunc(arguments: boolean, ...rest: any[]) { Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated //// [/src/outFile.d.ts] +declare module "src/class" { + export class classC { + prop: number; + } +} +declare module "src/indirectClass" { + import { classC } from "src/class"; + export class indirectClass { + classC: classC; + } +} +declare module "src/directUse" { } +declare module "src/indirectUse" { } +declare module "src/noChangeFile" { + export function writeLog(s: string): void; +} declare function someFunc(arguments: boolean, ...rest: any[]): void; //// [/src/outFile.js] +define("src/class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("src/indirectClass", ["require", "exports", "src/class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("src/directUse", ["require", "exports", "src/indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("src/indirectUse", ["require", "exports", "src/indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("src/noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); function someFunc(arguments) { var rest = []; for (var _i = 1; _i < arguments.length; _i++) { @@ -87,7 +137,7 @@ function someFunc(arguments) { //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"composite":true,"outFile":"./outFile.js"},"outSignature":"-5615417221-declare function someFunc(arguments: boolean, ...rest: any[]): void;\n","latestChangedDtsFile":"./outFile.d.ts"},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"composite":true,"module":2,"outFile":"./outFile.js"},"outSignature":"8998999540-declare module \"src/class\" {\n export class classC {\n prop: number;\n }\n}\ndeclare module \"src/indirectClass\" {\n import { classC } from \"src/class\";\n export class indirectClass {\n classC: classC;\n }\n}\ndeclare module \"src/directUse\" { }\ndeclare module \"src/indirectUse\" { }\ndeclare module \"src/noChangeFile\" {\n export function writeLog(s: string): void;\n}\ndeclare function someFunc(arguments: boolean, ...rest: any[]): void;\n","latestChangedDtsFile":"./outFile.d.ts"},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -177,13 +227,14 @@ function someFunc(arguments) { ], "options": { "composite": true, + "module": 2, "outFile": "./outFile.js" }, - "outSignature": "-5615417221-declare function someFunc(arguments: boolean, ...rest: any[]): void;\n", + "outSignature": "8998999540-declare module \"src/class\" {\n export class classC {\n prop: number;\n }\n}\ndeclare module \"src/indirectClass\" {\n import { classC } from \"src/class\";\n export class indirectClass {\n classC: classC;\n }\n}\ndeclare module \"src/directUse\" { }\ndeclare module \"src/indirectUse\" { }\ndeclare module \"src/noChangeFile\" {\n export function writeLog(s: string): void;\n}\ndeclare function someFunc(arguments: boolean, ...rest: any[]): void;\n", "latestChangedDtsFile": "./outFile.d.ts" }, "version": "FakeTSVersion", - "size": 1630 + "size": 2052 } @@ -194,15 +245,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -213,15 +256,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -237,11 +272,6 @@ export class classC { Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -263,10 +293,9 @@ Output:: 'prop1' is declared here. -Found 3 errors in 3 files. +Found 2 errors in 2 files. Errors Files - 1 src/project/src/class.ts:1 1 src/project/src/directUse.ts:2 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -285,22 +314,14 @@ export class classC { Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -312,22 +333,14 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -339,15 +352,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -358,15 +363,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -377,22 +374,14 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -409,11 +398,6 @@ export class classC { Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -440,19 +424,87 @@ Output::    ~~~~~~~~~~~~~~~~~~ -Found 4 errors in 4 files. +Found 3 errors in 3 files. Errors Files - 1 src/project/src/class.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 -//// [/src/outFile.js] file written with same contents +//// [/src/outFile.d.ts] +declare module "src/class" { + export class classC { + prop1: number; + } +} +declare module "src/indirectClass" { + import { classC } from "src/class"; + export class indirectClass { + classC: classC; + } +} +declare module "src/directUse" { } +declare module "src/indirectUse" { } +declare module "src/noChangeFile" { + export function writeLog(s: string): void; +} +declare function someFunc(arguments: boolean, ...rest: any[]): void; + + +//// [/src/outFile.js] +define("src/class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop1 = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("src/indirectClass", ["require", "exports", "src/class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("src/directUse", ["require", "exports", "src/indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("src/indirectUse", ["require", "exports", "src/indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("src/noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); +function someFunc(arguments) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } +} + + //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"1786859709-export class classC {\n prop1 = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"composite":true,"outFile":"./outFile.js"},"outSignature":"-5615417221-declare function someFunc(arguments: boolean, ...rest: any[]): void;\n","latestChangedDtsFile":"./outFile.d.ts"},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"1786859709-export class classC {\n prop1 = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"composite":true,"module":2,"outFile":"./outFile.js"},"outSignature":"-1966987419-declare module \"src/class\" {\n export class classC {\n prop1: number;\n }\n}\ndeclare module \"src/indirectClass\" {\n import { classC } from \"src/class\";\n export class indirectClass {\n classC: classC;\n }\n}\ndeclare module \"src/directUse\" { }\ndeclare module \"src/indirectUse\" { }\ndeclare module \"src/noChangeFile\" {\n export function writeLog(s: string): void;\n}\ndeclare function someFunc(arguments: boolean, ...rest: any[]): void;\n","latestChangedDtsFile":"./outFile.d.ts"},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -542,13 +594,14 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated ], "options": { "composite": true, + "module": 2, "outFile": "./outFile.js" }, - "outSignature": "-5615417221-declare function someFunc(arguments: boolean, ...rest: any[]): void;\n", + "outSignature": "-1966987419-declare module \"src/class\" {\n export class classC {\n prop1: number;\n }\n}\ndeclare module \"src/indirectClass\" {\n import { classC } from \"src/class\";\n export class indirectClass {\n classC: classC;\n }\n}\ndeclare module \"src/directUse\" { }\ndeclare module \"src/indirectUse\" { }\ndeclare module \"src/noChangeFile\" {\n export function writeLog(s: string): void;\n}\ndeclare function someFunc(arguments: boolean, ...rest: any[]): void;\n", "latestChangedDtsFile": "./outFile.d.ts" }, "version": "FakeTSVersion", - "size": 1632 + "size": 2056 } @@ -559,11 +612,6 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -590,10 +638,9 @@ Output::    ~~~~~~~~~~~~~~~~~~ -Found 4 errors in 4 files. +Found 3 errors in 3 files. Errors Files - 1 src/project/src/class.ts:1 1 src/project/src/directUse.ts:2 1 src/project/src/indirectUse.ts:2 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 @@ -608,11 +655,6 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -634,10 +676,9 @@ Output:: 'prop1' is declared here. -Found 3 errors in 3 files. +Found 2 errors in 2 files. Errors Files - 1 src/project/src/class.ts:1 1 src/project/src/directUse.ts:2 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -651,11 +692,6 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -677,10 +713,9 @@ Output:: 'prop1' is declared here. -Found 3 errors in 3 files. +Found 2 errors in 2 files. Errors Files - 1 src/project/src/class.ts:1 1 src/project/src/directUse.ts:2 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -694,11 +729,6 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -725,10 +755,9 @@ Output::    ~~~~~~~~~~~~~~~~~~ -Found 4 errors in 4 files. +Found 3 errors in 3 files. Errors Files - 1 src/project/src/class.ts:1 1 src/project/src/directUse.ts:2 1 src/project/src/indirectUse.ts:2 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 @@ -748,15 +777,7 @@ export class classC { Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -767,28 +788,89 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated -//// [/src/outFile.js] file written with same contents +//// [/src/outFile.d.ts] +declare module "src/class" { + export class classC { + prop: number; + } +} +declare module "src/indirectClass" { + import { classC } from "src/class"; + export class indirectClass { + classC: classC; + } +} +declare module "src/directUse" { } +declare module "src/indirectUse" { } +declare module "src/noChangeFile" { + export function writeLog(s: string): void; +} +declare function someFunc(arguments: boolean, ...rest: any[]): void; + + +//// [/src/outFile.js] +define("src/class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("src/indirectClass", ["require", "exports", "src/class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("src/directUse", ["require", "exports", "src/indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("src/indirectUse", ["require", "exports", "src/indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("src/noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); +function someFunc(arguments) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } +} + + //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"composite":true,"outFile":"./outFile.js"},"outSignature":"-5615417221-declare function someFunc(arguments: boolean, ...rest: any[]): void;\n","latestChangedDtsFile":"./outFile.d.ts"},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"composite":true,"module":2,"outFile":"./outFile.js"},"outSignature":"8998999540-declare module \"src/class\" {\n export class classC {\n prop: number;\n }\n}\ndeclare module \"src/indirectClass\" {\n import { classC } from \"src/class\";\n export class indirectClass {\n classC: classC;\n }\n}\ndeclare module \"src/directUse\" { }\ndeclare module \"src/indirectUse\" { }\ndeclare module \"src/noChangeFile\" {\n export function writeLog(s: string): void;\n}\ndeclare function someFunc(arguments: boolean, ...rest: any[]): void;\n","latestChangedDtsFile":"./outFile.d.ts"},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -878,13 +960,14 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated ], "options": { "composite": true, + "module": 2, "outFile": "./outFile.js" }, - "outSignature": "-5615417221-declare function someFunc(arguments: boolean, ...rest: any[]): void;\n", + "outSignature": "8998999540-declare module \"src/class\" {\n export class classC {\n prop: number;\n }\n}\ndeclare module \"src/indirectClass\" {\n import { classC } from \"src/class\";\n export class indirectClass {\n classC: classC;\n }\n}\ndeclare module \"src/directUse\" { }\ndeclare module \"src/indirectUse\" { }\ndeclare module \"src/noChangeFile\" {\n export function writeLog(s: string): void;\n}\ndeclare function someFunc(arguments: boolean, ...rest: any[]): void;\n", "latestChangedDtsFile": "./outFile.d.ts" }, "version": "FakeTSVersion", - "size": 1630 + "size": 2052 } @@ -895,15 +978,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -914,15 +989,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -933,22 +1000,14 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated diff --git a/tests/baselines/reference/tsc/noEmit/changes-incremental-declaration-outFile.js b/tests/baselines/reference/tsc/noEmit/outFile/changes-incremental-declaration.js similarity index 78% rename from tests/baselines/reference/tsc/noEmit/changes-incremental-declaration-outFile.js rename to tests/baselines/reference/tsc/noEmit/outFile/changes-incremental-declaration.js index 2562d5e8b72a8..ece4737392786 100644 --- a/tests/baselines/reference/tsc/noEmit/changes-incremental-declaration-outFile.js +++ b/tests/baselines/reference/tsc/noEmit/outFile/changes-incremental-declaration.js @@ -47,7 +47,8 @@ function someFunc(arguments: boolean, ...rest: any[]) { "compilerOptions": { "incremental": true, "declaration": true, - "outFile": "../outFile.js" + "outFile": "../outFile.js", + "module": "amd" } } @@ -55,30 +56,79 @@ function someFunc(arguments: boolean, ...rest: any[]) { Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated //// [/src/outFile.d.ts] +declare module "class" { + export class classC { + prop: number; + } +} +declare module "indirectClass" { + import { classC } from "class"; + export class indirectClass { + classC: classC; + } +} +declare module "directUse" { } +declare module "indirectUse" { } +declare module "noChangeFile" { + export function writeLog(s: string): void; +} declare function someFunc(arguments: boolean, ...rest: any[]): void; //// [/src/outFile.js] +define("class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("indirectClass", ["require", "exports", "class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("directUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("indirectUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); function someFunc(arguments) { var rest = []; for (var _i = 1; _i < arguments.length; _i++) { @@ -88,7 +138,7 @@ function someFunc(arguments) { //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"declaration":true,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"declaration":true,"module":2,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -178,11 +228,12 @@ function someFunc(arguments) { ], "options": { "declaration": true, + "module": 2, "outFile": "./outFile.js" } }, "version": "FakeTSVersion", - "size": 1492 + "size": 1503 } @@ -193,15 +244,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -212,15 +255,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -236,11 +271,6 @@ export class classC { Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -262,10 +292,9 @@ Output:: 'prop1' is declared here. -Found 3 errors in 3 files. +Found 2 errors in 2 files. Errors Files - 1 src/project/src/class.ts:1 1 src/project/src/directUse.ts:2 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -284,22 +313,14 @@ export class classC { Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -311,22 +332,14 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -338,15 +351,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -357,15 +362,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -376,22 +373,14 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -408,11 +397,6 @@ export class classC { Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -439,20 +423,87 @@ Output::    ~~~~~~~~~~~~~~~~~~ -Found 4 errors in 4 files. +Found 3 errors in 3 files. Errors Files - 1 src/project/src/class.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 -//// [/src/outFile.d.ts] file written with same contents -//// [/src/outFile.js] file written with same contents +//// [/src/outFile.d.ts] +declare module "class" { + export class classC { + prop1: number; + } +} +declare module "indirectClass" { + import { classC } from "class"; + export class indirectClass { + classC: classC; + } +} +declare module "directUse" { } +declare module "indirectUse" { } +declare module "noChangeFile" { + export function writeLog(s: string): void; +} +declare function someFunc(arguments: boolean, ...rest: any[]): void; + + +//// [/src/outFile.js] +define("class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop1 = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("indirectClass", ["require", "exports", "class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("directUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("indirectUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); +function someFunc(arguments) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } +} + + //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"1786859709-export class classC {\n prop1 = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"declaration":true,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"1786859709-export class classC {\n prop1 = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"declaration":true,"module":2,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -542,11 +593,12 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated ], "options": { "declaration": true, + "module": 2, "outFile": "./outFile.js" } }, "version": "FakeTSVersion", - "size": 1494 + "size": 1505 } @@ -557,11 +609,6 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -588,10 +635,9 @@ Output::    ~~~~~~~~~~~~~~~~~~ -Found 4 errors in 4 files. +Found 3 errors in 3 files. Errors Files - 1 src/project/src/class.ts:1 1 src/project/src/directUse.ts:2 1 src/project/src/indirectUse.ts:2 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 @@ -606,11 +652,6 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -632,10 +673,9 @@ Output:: 'prop1' is declared here. -Found 3 errors in 3 files. +Found 2 errors in 2 files. Errors Files - 1 src/project/src/class.ts:1 1 src/project/src/directUse.ts:2 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -649,11 +689,6 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -675,10 +710,9 @@ Output:: 'prop1' is declared here. -Found 3 errors in 3 files. +Found 2 errors in 2 files. Errors Files - 1 src/project/src/class.ts:1 1 src/project/src/directUse.ts:2 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -692,11 +726,6 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -723,10 +752,9 @@ Output::    ~~~~~~~~~~~~~~~~~~ -Found 4 errors in 4 files. +Found 3 errors in 3 files. Errors Files - 1 src/project/src/class.ts:1 1 src/project/src/directUse.ts:2 1 src/project/src/indirectUse.ts:2 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 @@ -746,15 +774,7 @@ export class classC { Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -765,29 +785,89 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated -//// [/src/outFile.d.ts] file written with same contents -//// [/src/outFile.js] file written with same contents +//// [/src/outFile.d.ts] +declare module "class" { + export class classC { + prop: number; + } +} +declare module "indirectClass" { + import { classC } from "class"; + export class indirectClass { + classC: classC; + } +} +declare module "directUse" { } +declare module "indirectUse" { } +declare module "noChangeFile" { + export function writeLog(s: string): void; +} +declare function someFunc(arguments: boolean, ...rest: any[]): void; + + +//// [/src/outFile.js] +define("class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("indirectClass", ["require", "exports", "class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("directUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("indirectUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); +function someFunc(arguments) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } +} + + //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"declaration":true,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"declaration":true,"module":2,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -877,11 +957,12 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated ], "options": { "declaration": true, + "module": 2, "outFile": "./outFile.js" } }, "version": "FakeTSVersion", - "size": 1492 + "size": 1503 } @@ -892,15 +973,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -911,15 +984,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -930,22 +995,14 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated diff --git a/tests/baselines/reference/tsc/noEmit/changes-incremental-outFile.js b/tests/baselines/reference/tsc/noEmit/outFile/changes-incremental.js similarity index 79% rename from tests/baselines/reference/tsc/noEmit/changes-incremental-outFile.js rename to tests/baselines/reference/tsc/noEmit/outFile/changes-incremental.js index f26a4a36075f4..f8011eaffd751 100644 --- a/tests/baselines/reference/tsc/noEmit/changes-incremental-outFile.js +++ b/tests/baselines/reference/tsc/noEmit/outFile/changes-incremental.js @@ -46,7 +46,8 @@ function someFunc(arguments: boolean, ...rest: any[]) { { "compilerOptions": { "incremental": true, - "outFile": "../outFile.js" + "outFile": "../outFile.js", + "module": "amd" } } @@ -54,26 +55,59 @@ function someFunc(arguments: boolean, ...rest: any[]) { Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated //// [/src/outFile.js] +define("class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("indirectClass", ["require", "exports", "class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("directUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("indirectUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); function someFunc(arguments) { var rest = []; for (var _i = 1; _i < arguments.length; _i++) { @@ -83,7 +117,7 @@ function someFunc(arguments) { //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"outFile":"./outFile.js"}},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"module":2,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -172,11 +206,12 @@ function someFunc(arguments) { ] ], "options": { + "module": 2, "outFile": "./outFile.js" } }, "version": "FakeTSVersion", - "size": 1473 + "size": 1484 } @@ -187,15 +222,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -206,15 +233,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -230,11 +249,6 @@ export class classC { Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -256,10 +270,9 @@ Output:: 'prop1' is declared here. -Found 3 errors in 3 files. +Found 2 errors in 2 files. Errors Files - 1 src/project/src/class.ts:1 1 src/project/src/directUse.ts:2 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -278,22 +291,14 @@ export class classC { Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -305,22 +310,14 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -332,15 +329,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -351,15 +340,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -370,22 +351,14 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated @@ -402,11 +375,6 @@ export class classC { Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -433,19 +401,67 @@ Output::    ~~~~~~~~~~~~~~~~~~ -Found 4 errors in 4 files. +Found 3 errors in 3 files. Errors Files - 1 src/project/src/class.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 -//// [/src/outFile.js] file written with same contents +//// [/src/outFile.js] +define("class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop1 = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("indirectClass", ["require", "exports", "class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("directUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("indirectUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); +function someFunc(arguments) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } +} + + //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"1786859709-export class classC {\n prop1 = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"outFile":"./outFile.js"}},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"1786859709-export class classC {\n prop1 = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"module":2,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -534,11 +550,12 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated ] ], "options": { + "module": 2, "outFile": "./outFile.js" } }, "version": "FakeTSVersion", - "size": 1475 + "size": 1486 } @@ -549,11 +566,6 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -580,10 +592,9 @@ Output::    ~~~~~~~~~~~~~~~~~~ -Found 4 errors in 4 files. +Found 3 errors in 3 files. Errors Files - 1 src/project/src/class.ts:1 1 src/project/src/directUse.ts:2 1 src/project/src/indirectUse.ts:2 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 @@ -598,11 +609,6 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -624,10 +630,9 @@ Output:: 'prop1' is declared here. -Found 3 errors in 3 files. +Found 2 errors in 2 files. Errors Files - 1 src/project/src/class.ts:1 1 src/project/src/directUse.ts:2 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -641,11 +646,6 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -667,10 +667,9 @@ Output:: 'prop1' is declared here. -Found 3 errors in 3 files. +Found 2 errors in 2 files. Errors Files - 1 src/project/src/class.ts:1 1 src/project/src/directUse.ts:2 1 src/project/src/indirectUse.ts:2 exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped @@ -684,11 +683,6 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -715,10 +709,9 @@ Output::    ~~~~~~~~~~~~~~~~~~ -Found 4 errors in 4 files. +Found 3 errors in 3 files. Errors Files - 1 src/project/src/class.ts:1 1 src/project/src/directUse.ts:2 1 src/project/src/indirectUse.ts:2 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 @@ -738,15 +731,7 @@ export class classC { Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -757,28 +742,69 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated -//// [/src/outFile.js] file written with same contents +//// [/src/outFile.js] +define("class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("indirectClass", ["require", "exports", "class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("directUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("indirectUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); +function someFunc(arguments) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } +} + + //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"outFile":"./outFile.js"}},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"module":2,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -867,11 +893,12 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated ] ], "options": { + "module": 2, "outFile": "./outFile.js" } }, "version": "FakeTSVersion", - "size": 1473 + "size": 1484 } @@ -882,15 +909,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -901,15 +920,7 @@ Input:: Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -920,22 +931,14 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated diff --git a/tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-composite-outFile.js b/tests/baselines/reference/tsc/noEmit/outFile/changes-with-initial-noEmit-composite.js similarity index 66% rename from tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-composite-outFile.js rename to tests/baselines/reference/tsc/noEmit/outFile/changes-with-initial-noEmit-composite.js index 66433fc32268c..d82289ea12d00 100644 --- a/tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-composite-outFile.js +++ b/tests/baselines/reference/tsc/noEmit/outFile/changes-with-initial-noEmit-composite.js @@ -46,7 +46,8 @@ function someFunc(arguments: boolean, ...rest: any[]) { { "compilerOptions": { "composite": true, - "outFile": "../outFile.js" + "outFile": "../outFile.js", + "module": "amd" } } @@ -54,15 +55,7 @@ function someFunc(arguments: boolean, ...rest: any[]) { Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -73,30 +66,79 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated //// [/src/outFile.d.ts] +declare module "src/class" { + export class classC { + prop: number; + } +} +declare module "src/indirectClass" { + import { classC } from "src/class"; + export class indirectClass { + classC: classC; + } +} +declare module "src/directUse" { } +declare module "src/indirectUse" { } +declare module "src/noChangeFile" { + export function writeLog(s: string): void; +} declare function someFunc(arguments: boolean, ...rest: any[]): void; //// [/src/outFile.js] +define("src/class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("src/indirectClass", ["require", "exports", "src/class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("src/directUse", ["require", "exports", "src/indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("src/indirectUse", ["require", "exports", "src/indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("src/noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); function someFunc(arguments) { var rest = []; for (var _i = 1; _i < arguments.length; _i++) { @@ -106,7 +148,7 @@ function someFunc(arguments) { //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"composite":true,"outFile":"./outFile.js"},"outSignature":"-5615417221-declare function someFunc(arguments: boolean, ...rest: any[]): void;\n","latestChangedDtsFile":"./outFile.d.ts"},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"composite":true,"module":2,"outFile":"./outFile.js"},"outSignature":"8998999540-declare module \"src/class\" {\n export class classC {\n prop: number;\n }\n}\ndeclare module \"src/indirectClass\" {\n import { classC } from \"src/class\";\n export class indirectClass {\n classC: classC;\n }\n}\ndeclare module \"src/directUse\" { }\ndeclare module \"src/indirectUse\" { }\ndeclare module \"src/noChangeFile\" {\n export function writeLog(s: string): void;\n}\ndeclare function someFunc(arguments: boolean, ...rest: any[]): void;\n","latestChangedDtsFile":"./outFile.d.ts"},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -196,13 +238,14 @@ function someFunc(arguments) { ], "options": { "composite": true, + "module": 2, "outFile": "./outFile.js" }, - "outSignature": "-5615417221-declare function someFunc(arguments: boolean, ...rest: any[]): void;\n", + "outSignature": "8998999540-declare module \"src/class\" {\n export class classC {\n prop: number;\n }\n}\ndeclare module \"src/indirectClass\" {\n import { classC } from \"src/class\";\n export class indirectClass {\n classC: classC;\n }\n}\ndeclare module \"src/directUse\" { }\ndeclare module \"src/indirectUse\" { }\ndeclare module \"src/noChangeFile\" {\n export function writeLog(s: string): void;\n}\ndeclare function someFunc(arguments: boolean, ...rest: any[]): void;\n", "latestChangedDtsFile": "./outFile.d.ts" }, "version": "FakeTSVersion", - "size": 1630 + "size": 2052 } @@ -218,11 +261,6 @@ export class classC { Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -249,19 +287,87 @@ Output::    ~~~~~~~~~~~~~~~~~~ -Found 4 errors in 4 files. +Found 3 errors in 3 files. Errors Files - 1 src/project/src/class.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 -//// [/src/outFile.js] file written with same contents +//// [/src/outFile.d.ts] +declare module "src/class" { + export class classC { + prop1: number; + } +} +declare module "src/indirectClass" { + import { classC } from "src/class"; + export class indirectClass { + classC: classC; + } +} +declare module "src/directUse" { } +declare module "src/indirectUse" { } +declare module "src/noChangeFile" { + export function writeLog(s: string): void; +} +declare function someFunc(arguments: boolean, ...rest: any[]): void; + + +//// [/src/outFile.js] +define("src/class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop1 = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("src/indirectClass", ["require", "exports", "src/class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("src/directUse", ["require", "exports", "src/indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("src/indirectUse", ["require", "exports", "src/indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("src/noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); +function someFunc(arguments) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } +} + + //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"1786859709-export class classC {\n prop1 = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"composite":true,"outFile":"./outFile.js"},"outSignature":"-5615417221-declare function someFunc(arguments: boolean, ...rest: any[]): void;\n","latestChangedDtsFile":"./outFile.d.ts"},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"1786859709-export class classC {\n prop1 = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"composite":true,"module":2,"outFile":"./outFile.js"},"outSignature":"-1966987419-declare module \"src/class\" {\n export class classC {\n prop1: number;\n }\n}\ndeclare module \"src/indirectClass\" {\n import { classC } from \"src/class\";\n export class indirectClass {\n classC: classC;\n }\n}\ndeclare module \"src/directUse\" { }\ndeclare module \"src/indirectUse\" { }\ndeclare module \"src/noChangeFile\" {\n export function writeLog(s: string): void;\n}\ndeclare function someFunc(arguments: boolean, ...rest: any[]): void;\n","latestChangedDtsFile":"./outFile.d.ts"},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -351,13 +457,14 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated ], "options": { "composite": true, + "module": 2, "outFile": "./outFile.js" }, - "outSignature": "-5615417221-declare function someFunc(arguments: boolean, ...rest: any[]): void;\n", + "outSignature": "-1966987419-declare module \"src/class\" {\n export class classC {\n prop1: number;\n }\n}\ndeclare module \"src/indirectClass\" {\n import { classC } from \"src/class\";\n export class indirectClass {\n classC: classC;\n }\n}\ndeclare module \"src/directUse\" { }\ndeclare module \"src/indirectUse\" { }\ndeclare module \"src/noChangeFile\" {\n export function writeLog(s: string): void;\n}\ndeclare function someFunc(arguments: boolean, ...rest: any[]): void;\n", "latestChangedDtsFile": "./outFile.d.ts" }, "version": "FakeTSVersion", - "size": 1632 + "size": 2056 } @@ -373,15 +480,7 @@ export class classC { Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -392,28 +491,89 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated -//// [/src/outFile.js] file written with same contents +//// [/src/outFile.d.ts] +declare module "src/class" { + export class classC { + prop: number; + } +} +declare module "src/indirectClass" { + import { classC } from "src/class"; + export class indirectClass { + classC: classC; + } +} +declare module "src/directUse" { } +declare module "src/indirectUse" { } +declare module "src/noChangeFile" { + export function writeLog(s: string): void; +} +declare function someFunc(arguments: boolean, ...rest: any[]): void; + + +//// [/src/outFile.js] +define("src/class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("src/indirectClass", ["require", "exports", "src/class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("src/directUse", ["require", "exports", "src/indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("src/indirectUse", ["require", "exports", "src/indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("src/noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); +function someFunc(arguments) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } +} + + //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"composite":true,"outFile":"./outFile.js"},"outSignature":"-5615417221-declare function someFunc(arguments: boolean, ...rest: any[]): void;\n","latestChangedDtsFile":"./outFile.d.ts"},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"composite":true,"module":2,"outFile":"./outFile.js"},"outSignature":"8998999540-declare module \"src/class\" {\n export class classC {\n prop: number;\n }\n}\ndeclare module \"src/indirectClass\" {\n import { classC } from \"src/class\";\n export class indirectClass {\n classC: classC;\n }\n}\ndeclare module \"src/directUse\" { }\ndeclare module \"src/indirectUse\" { }\ndeclare module \"src/noChangeFile\" {\n export function writeLog(s: string): void;\n}\ndeclare function someFunc(arguments: boolean, ...rest: any[]): void;\n","latestChangedDtsFile":"./outFile.d.ts"},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -503,12 +663,13 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated ], "options": { "composite": true, + "module": 2, "outFile": "./outFile.js" }, - "outSignature": "-5615417221-declare function someFunc(arguments: boolean, ...rest: any[]): void;\n", + "outSignature": "8998999540-declare module \"src/class\" {\n export class classC {\n prop: number;\n }\n}\ndeclare module \"src/indirectClass\" {\n import { classC } from \"src/class\";\n export class indirectClass {\n classC: classC;\n }\n}\ndeclare module \"src/directUse\" { }\ndeclare module \"src/indirectUse\" { }\ndeclare module \"src/noChangeFile\" {\n export function writeLog(s: string): void;\n}\ndeclare function someFunc(arguments: boolean, ...rest: any[]): void;\n", "latestChangedDtsFile": "./outFile.d.ts" }, "version": "FakeTSVersion", - "size": 1630 + "size": 2052 } diff --git a/tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-incremental-declaration-outFile.js b/tests/baselines/reference/tsc/noEmit/outFile/changes-with-initial-noEmit-incremental-declaration.js similarity index 74% rename from tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-incremental-declaration-outFile.js rename to tests/baselines/reference/tsc/noEmit/outFile/changes-with-initial-noEmit-incremental-declaration.js index 9fa1a3d6a520a..50551b1a3ed70 100644 --- a/tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-incremental-declaration-outFile.js +++ b/tests/baselines/reference/tsc/noEmit/outFile/changes-with-initial-noEmit-incremental-declaration.js @@ -47,7 +47,8 @@ function someFunc(arguments: boolean, ...rest: any[]) { "compilerOptions": { "incremental": true, "declaration": true, - "outFile": "../outFile.js" + "outFile": "../outFile.js", + "module": "amd" } } @@ -55,15 +56,7 @@ function someFunc(arguments: boolean, ...rest: any[]) { Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -74,30 +67,79 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated //// [/src/outFile.d.ts] +declare module "class" { + export class classC { + prop: number; + } +} +declare module "indirectClass" { + import { classC } from "class"; + export class indirectClass { + classC: classC; + } +} +declare module "directUse" { } +declare module "indirectUse" { } +declare module "noChangeFile" { + export function writeLog(s: string): void; +} declare function someFunc(arguments: boolean, ...rest: any[]): void; //// [/src/outFile.js] +define("class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("indirectClass", ["require", "exports", "class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("directUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("indirectUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); function someFunc(arguments) { var rest = []; for (var _i = 1; _i < arguments.length; _i++) { @@ -107,7 +149,7 @@ function someFunc(arguments) { //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"declaration":true,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"declaration":true,"module":2,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -197,11 +239,12 @@ function someFunc(arguments) { ], "options": { "declaration": true, + "module": 2, "outFile": "./outFile.js" } }, "version": "FakeTSVersion", - "size": 1492 + "size": 1503 } @@ -217,11 +260,6 @@ export class classC { Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -248,20 +286,87 @@ Output::    ~~~~~~~~~~~~~~~~~~ -Found 4 errors in 4 files. +Found 3 errors in 3 files. Errors Files - 1 src/project/src/class.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 -//// [/src/outFile.d.ts] file written with same contents -//// [/src/outFile.js] file written with same contents +//// [/src/outFile.d.ts] +declare module "class" { + export class classC { + prop1: number; + } +} +declare module "indirectClass" { + import { classC } from "class"; + export class indirectClass { + classC: classC; + } +} +declare module "directUse" { } +declare module "indirectUse" { } +declare module "noChangeFile" { + export function writeLog(s: string): void; +} +declare function someFunc(arguments: boolean, ...rest: any[]): void; + + +//// [/src/outFile.js] +define("class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop1 = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("indirectClass", ["require", "exports", "class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("directUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("indirectUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); +function someFunc(arguments) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } +} + + //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"1786859709-export class classC {\n prop1 = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"declaration":true,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"1786859709-export class classC {\n prop1 = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"declaration":true,"module":2,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -351,11 +456,12 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated ], "options": { "declaration": true, + "module": 2, "outFile": "./outFile.js" } }, "version": "FakeTSVersion", - "size": 1494 + "size": 1505 } @@ -371,15 +477,7 @@ export class classC { Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -390,29 +488,89 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated -//// [/src/outFile.d.ts] file written with same contents -//// [/src/outFile.js] file written with same contents +//// [/src/outFile.d.ts] +declare module "class" { + export class classC { + prop: number; + } +} +declare module "indirectClass" { + import { classC } from "class"; + export class indirectClass { + classC: classC; + } +} +declare module "directUse" { } +declare module "indirectUse" { } +declare module "noChangeFile" { + export function writeLog(s: string): void; +} +declare function someFunc(arguments: boolean, ...rest: any[]): void; + + +//// [/src/outFile.js] +define("class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("indirectClass", ["require", "exports", "class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("directUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("indirectUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); +function someFunc(arguments) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } +} + + //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"declaration":true,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"declaration":true,"module":2,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -502,10 +660,11 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated ], "options": { "declaration": true, + "module": 2, "outFile": "./outFile.js" } }, "version": "FakeTSVersion", - "size": 1492 + "size": 1503 } diff --git a/tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-incremental-outFile.js b/tests/baselines/reference/tsc/noEmit/outFile/changes-with-initial-noEmit-incremental.js similarity index 78% rename from tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-incremental-outFile.js rename to tests/baselines/reference/tsc/noEmit/outFile/changes-with-initial-noEmit-incremental.js index 66f876841fbee..68fb380f32336 100644 --- a/tests/baselines/reference/tsc/noEmit/changes-with-initial-noEmit-incremental-outFile.js +++ b/tests/baselines/reference/tsc/noEmit/outFile/changes-with-initial-noEmit-incremental.js @@ -46,7 +46,8 @@ function someFunc(arguments: boolean, ...rest: any[]) { { "compilerOptions": { "incremental": true, - "outFile": "../outFile.js" + "outFile": "../outFile.js", + "module": "amd" } } @@ -54,15 +55,7 @@ function someFunc(arguments: boolean, ...rest: any[]) { Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -73,26 +66,59 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated //// [/src/outFile.js] +define("class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("indirectClass", ["require", "exports", "class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("directUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("indirectUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); function someFunc(arguments) { var rest = []; for (var _i = 1; _i < arguments.length; _i++) { @@ -102,7 +128,7 @@ function someFunc(arguments) { //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"outFile":"./outFile.js"}},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"module":2,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -191,11 +217,12 @@ function someFunc(arguments) { ] ], "options": { + "module": 2, "outFile": "./outFile.js" } }, "version": "FakeTSVersion", - "size": 1473 + "size": 1484 } @@ -211,11 +238,6 @@ export class classC { Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/directUse.ts:2:28 - error TS2551: Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'? 2 new indirectClass().classC.prop; @@ -242,19 +264,67 @@ Output::    ~~~~~~~~~~~~~~~~~~ -Found 4 errors in 4 files. +Found 3 errors in 3 files. Errors Files - 1 src/project/src/class.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 -//// [/src/outFile.js] file written with same contents +//// [/src/outFile.js] +define("class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop1 = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("indirectClass", ["require", "exports", "class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("directUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("indirectUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); +function someFunc(arguments) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } +} + + //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"1786859709-export class classC {\n prop1 = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"outFile":"./outFile.js"}},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"1786859709-export class classC {\n prop1 = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"module":2,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -343,11 +413,12 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated ] ], "options": { + "module": 2, "outFile": "./outFile.js" } }, "version": "FakeTSVersion", - "size": 1475 + "size": 1486 } @@ -363,15 +434,7 @@ export class classC { Output:: /lib/tsc --p src/project --noEmit -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - - -Found 1 error in src/project/src/class.ts:1 - -exitCode:: ExitStatus.DiagnosticsPresent_OutputsSkipped +exitCode:: ExitStatus.Success @@ -382,28 +445,69 @@ Input:: Output:: /lib/tsc --p src/project -src/project/src/class.ts:1:14 - error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'. - -1 export class classC { -   ~~~~~~ - src/project/src/noChangeFileWithEmitSpecificError.ts:1:19 - error TS2396: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters. 1 function someFunc(arguments: boolean, ...rest: any[]) {    ~~~~~~~~~~~~~~~~~~ -Found 2 errors in 2 files. +Found 1 error in src/project/src/noChangeFileWithEmitSpecificError.ts:1 -Errors Files - 1 src/project/src/class.ts:1 - 1 src/project/src/noChangeFileWithEmitSpecificError.ts:1 exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated -//// [/src/outFile.js] file written with same contents +//// [/src/outFile.js] +define("class", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.classC = void 0; + var classC = /** @class */ (function () { + function classC() { + this.prop = 1; + } + return classC; + }()); + exports.classC = classC; +}); +define("indirectClass", ["require", "exports", "class"], function (require, exports, class_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.indirectClass = void 0; + var indirectClass = /** @class */ (function () { + function indirectClass() { + this.classC = new class_1.classC(); + } + return indirectClass; + }()); + exports.indirectClass = indirectClass; +}); +define("directUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_1) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_1.indirectClass().classC.prop; +}); +define("indirectUse", ["require", "exports", "indirectClass"], function (require, exports, indirectClass_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + new indirectClass_2.indirectClass().classC.prop; +}); +define("noChangeFile", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.writeLog = writeLog; + function writeLog(s) { + } +}); +function someFunc(arguments) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } +} + + //// [/src/outFile.tsbuildinfo] -{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"outFile":"./outFile.js"}},"version":"FakeTSVersion"} +{"program":{"fileNames":["../lib/lib.d.ts","./project/src/class.ts","./project/src/indirectclass.ts","./project/src/directuse.ts","./project/src/indirectuse.ts","./project/src/nochangefile.ts","./project/src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ndeclare const console: { log(msg: any): void; };","impliedFormat":1},{"version":"545032748-export class classC {\n prop = 1;\n}","impliedFormat":1},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","impliedFormat":1},{"version":"6714567633-export function writeLog(s: string) {\n}","impliedFormat":1},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","impliedFormat":1}],"root":[[2,7]],"options":{"module":2,"outFile":"./outFile.js"}},"version":"FakeTSVersion"} //// [/src/outFile.tsbuildinfo.readable.baseline.txt] { @@ -492,10 +596,11 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated ] ], "options": { + "module": 2, "outFile": "./outFile.js" } }, "version": "FakeTSVersion", - "size": 1473 + "size": 1484 } diff --git a/tests/baselines/reference/tsc/noEmitOnError/file-deleted-before-fixing-error-with-noEmitOnError.js b/tests/baselines/reference/tsc/noEmitOnError/multiFile/file-deleted-before-fixing-error-with-noEmitOnError.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/file-deleted-before-fixing-error-with-noEmitOnError.js rename to tests/baselines/reference/tsc/noEmitOnError/multiFile/file-deleted-before-fixing-error-with-noEmitOnError.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/semantic-errors-with-declaration-with-incremental.js b/tests/baselines/reference/tsc/noEmitOnError/multiFile/semantic-errors-with-declaration-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/semantic-errors-with-declaration-with-incremental.js rename to tests/baselines/reference/tsc/noEmitOnError/multiFile/semantic-errors-with-declaration-with-incremental.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/semantic-errors-with-declaration.js b/tests/baselines/reference/tsc/noEmitOnError/multiFile/semantic-errors-with-declaration.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/semantic-errors-with-declaration.js rename to tests/baselines/reference/tsc/noEmitOnError/multiFile/semantic-errors-with-declaration.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/semantic-errors-with-incremental.js b/tests/baselines/reference/tsc/noEmitOnError/multiFile/semantic-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/semantic-errors-with-incremental.js rename to tests/baselines/reference/tsc/noEmitOnError/multiFile/semantic-errors-with-incremental.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/semantic-errors.js b/tests/baselines/reference/tsc/noEmitOnError/multiFile/semantic-errors.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/semantic-errors.js rename to tests/baselines/reference/tsc/noEmitOnError/multiFile/semantic-errors.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/syntax-errors-with-declaration-with-incremental.js b/tests/baselines/reference/tsc/noEmitOnError/multiFile/syntax-errors-with-declaration-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/syntax-errors-with-declaration-with-incremental.js rename to tests/baselines/reference/tsc/noEmitOnError/multiFile/syntax-errors-with-declaration-with-incremental.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/syntax-errors-with-declaration.js b/tests/baselines/reference/tsc/noEmitOnError/multiFile/syntax-errors-with-declaration.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/syntax-errors-with-declaration.js rename to tests/baselines/reference/tsc/noEmitOnError/multiFile/syntax-errors-with-declaration.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/syntax-errors-with-incremental.js b/tests/baselines/reference/tsc/noEmitOnError/multiFile/syntax-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/syntax-errors-with-incremental.js rename to tests/baselines/reference/tsc/noEmitOnError/multiFile/syntax-errors-with-incremental.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/syntax-errors.js b/tests/baselines/reference/tsc/noEmitOnError/multiFile/syntax-errors.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/syntax-errors.js rename to tests/baselines/reference/tsc/noEmitOnError/multiFile/syntax-errors.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/when-declarationMap-changes-discrepancies.js b/tests/baselines/reference/tsc/noEmitOnError/multiFile/when-declarationMap-changes-discrepancies.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/when-declarationMap-changes-discrepancies.js rename to tests/baselines/reference/tsc/noEmitOnError/multiFile/when-declarationMap-changes-discrepancies.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/when-declarationMap-changes.js b/tests/baselines/reference/tsc/noEmitOnError/multiFile/when-declarationMap-changes.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/when-declarationMap-changes.js rename to tests/baselines/reference/tsc/noEmitOnError/multiFile/when-declarationMap-changes.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/file-deleted-before-fixing-error-with-noEmitOnError-with-outFile.js b/tests/baselines/reference/tsc/noEmitOnError/outFile/file-deleted-before-fixing-error-with-noEmitOnError.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/file-deleted-before-fixing-error-with-noEmitOnError-with-outFile.js rename to tests/baselines/reference/tsc/noEmitOnError/outFile/file-deleted-before-fixing-error-with-noEmitOnError.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/semantic-errors-outFile-with-declaration-with-incremental.js b/tests/baselines/reference/tsc/noEmitOnError/outFile/semantic-errors-with-declaration-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/semantic-errors-outFile-with-declaration-with-incremental.js rename to tests/baselines/reference/tsc/noEmitOnError/outFile/semantic-errors-with-declaration-with-incremental.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/semantic-errors-outFile-with-declaration.js b/tests/baselines/reference/tsc/noEmitOnError/outFile/semantic-errors-with-declaration.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/semantic-errors-outFile-with-declaration.js rename to tests/baselines/reference/tsc/noEmitOnError/outFile/semantic-errors-with-declaration.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/semantic-errors-outFile-with-incremental.js b/tests/baselines/reference/tsc/noEmitOnError/outFile/semantic-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/semantic-errors-outFile-with-incremental.js rename to tests/baselines/reference/tsc/noEmitOnError/outFile/semantic-errors-with-incremental.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/semantic-errors-outFile.js b/tests/baselines/reference/tsc/noEmitOnError/outFile/semantic-errors.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/semantic-errors-outFile.js rename to tests/baselines/reference/tsc/noEmitOnError/outFile/semantic-errors.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/syntax-errors-outFile-with-declaration-with-incremental.js b/tests/baselines/reference/tsc/noEmitOnError/outFile/syntax-errors-with-declaration-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/syntax-errors-outFile-with-declaration-with-incremental.js rename to tests/baselines/reference/tsc/noEmitOnError/outFile/syntax-errors-with-declaration-with-incremental.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/syntax-errors-outFile-with-declaration.js b/tests/baselines/reference/tsc/noEmitOnError/outFile/syntax-errors-with-declaration.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/syntax-errors-outFile-with-declaration.js rename to tests/baselines/reference/tsc/noEmitOnError/outFile/syntax-errors-with-declaration.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/syntax-errors-outFile-with-incremental.js b/tests/baselines/reference/tsc/noEmitOnError/outFile/syntax-errors-with-incremental.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/syntax-errors-outFile-with-incremental.js rename to tests/baselines/reference/tsc/noEmitOnError/outFile/syntax-errors-with-incremental.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/syntax-errors-outFile.js b/tests/baselines/reference/tsc/noEmitOnError/outFile/syntax-errors.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/syntax-errors-outFile.js rename to tests/baselines/reference/tsc/noEmitOnError/outFile/syntax-errors.js diff --git a/tests/baselines/reference/tsc/noEmitOnError/when-declarationMap-changes-with-outFile.js b/tests/baselines/reference/tsc/noEmitOnError/outFile/when-declarationMap-changes.js similarity index 100% rename from tests/baselines/reference/tsc/noEmitOnError/when-declarationMap-changes-with-outFile.js rename to tests/baselines/reference/tsc/noEmitOnError/outFile/when-declarationMap-changes.js diff --git a/tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError-with-declaration-with-incremental.js b/tests/baselines/reference/tscWatch/noEmitOnError/multiFile/noEmitOnError-with-declaration-with-incremental.js similarity index 100% rename from tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError-with-declaration-with-incremental.js rename to tests/baselines/reference/tscWatch/noEmitOnError/multiFile/noEmitOnError-with-declaration-with-incremental.js diff --git a/tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError-with-declaration.js b/tests/baselines/reference/tscWatch/noEmitOnError/multiFile/noEmitOnError-with-declaration.js similarity index 100% rename from tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError-with-declaration.js rename to tests/baselines/reference/tscWatch/noEmitOnError/multiFile/noEmitOnError-with-declaration.js diff --git a/tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError-with-incremental.js b/tests/baselines/reference/tscWatch/noEmitOnError/multiFile/noEmitOnError-with-incremental.js similarity index 100% rename from tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError-with-incremental.js rename to tests/baselines/reference/tscWatch/noEmitOnError/multiFile/noEmitOnError-with-incremental.js diff --git a/tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError.js b/tests/baselines/reference/tscWatch/noEmitOnError/multiFile/noEmitOnError.js similarity index 100% rename from tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError.js rename to tests/baselines/reference/tscWatch/noEmitOnError/multiFile/noEmitOnError.js diff --git a/tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError-outFile-with-declaration-with-incremental.js b/tests/baselines/reference/tscWatch/noEmitOnError/outFile/noEmitOnError-with-declaration-with-incremental.js similarity index 100% rename from tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError-outFile-with-declaration-with-incremental.js rename to tests/baselines/reference/tscWatch/noEmitOnError/outFile/noEmitOnError-with-declaration-with-incremental.js diff --git a/tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError-outFile-with-declaration.js b/tests/baselines/reference/tscWatch/noEmitOnError/outFile/noEmitOnError-with-declaration.js similarity index 100% rename from tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError-outFile-with-declaration.js rename to tests/baselines/reference/tscWatch/noEmitOnError/outFile/noEmitOnError-with-declaration.js diff --git a/tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError-outFile-with-incremental.js b/tests/baselines/reference/tscWatch/noEmitOnError/outFile/noEmitOnError-with-incremental.js similarity index 100% rename from tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError-outFile-with-incremental.js rename to tests/baselines/reference/tscWatch/noEmitOnError/outFile/noEmitOnError-with-incremental.js diff --git a/tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError-outFile.js b/tests/baselines/reference/tscWatch/noEmitOnError/outFile/noEmitOnError.js similarity index 100% rename from tests/baselines/reference/tscWatch/noEmitOnError/noEmitOnError-outFile.js rename to tests/baselines/reference/tscWatch/noEmitOnError/outFile/noEmitOnError.js diff --git a/tests/baselines/reference/tscWatch/watchApi/noEmit-with-composite-with-emit-builder.js b/tests/baselines/reference/tscWatch/watchApi/multiFile/noEmit-with-composite-with-emit-builder.js similarity index 100% rename from tests/baselines/reference/tscWatch/watchApi/noEmit-with-composite-with-emit-builder.js rename to tests/baselines/reference/tscWatch/watchApi/multiFile/noEmit-with-composite-with-emit-builder.js diff --git a/tests/baselines/reference/tscWatch/watchApi/noEmit-with-composite-with-semantic-builder.js b/tests/baselines/reference/tscWatch/watchApi/multiFile/noEmit-with-composite-with-semantic-builder.js similarity index 100% rename from tests/baselines/reference/tscWatch/watchApi/noEmit-with-composite-with-semantic-builder.js rename to tests/baselines/reference/tscWatch/watchApi/multiFile/noEmit-with-composite-with-semantic-builder.js diff --git a/tests/baselines/reference/tscWatch/watchApi/noEmitOnError-with-composite-with-emit-builder.js b/tests/baselines/reference/tscWatch/watchApi/multiFile/noEmitOnError-with-composite-with-emit-builder.js similarity index 100% rename from tests/baselines/reference/tscWatch/watchApi/noEmitOnError-with-composite-with-emit-builder.js rename to tests/baselines/reference/tscWatch/watchApi/multiFile/noEmitOnError-with-composite-with-emit-builder.js diff --git a/tests/baselines/reference/tscWatch/watchApi/noEmitOnError-with-composite-with-semantic-builder.js b/tests/baselines/reference/tscWatch/watchApi/multiFile/noEmitOnError-with-composite-with-semantic-builder.js similarity index 100% rename from tests/baselines/reference/tscWatch/watchApi/noEmitOnError-with-composite-with-semantic-builder.js rename to tests/baselines/reference/tscWatch/watchApi/multiFile/noEmitOnError-with-composite-with-semantic-builder.js diff --git a/tests/baselines/reference/tscWatch/watchApi/semantic-builder-emitOnlyDts.js b/tests/baselines/reference/tscWatch/watchApi/multiFile/semantic-builder-emitOnlyDts.js similarity index 100% rename from tests/baselines/reference/tscWatch/watchApi/semantic-builder-emitOnlyDts.js rename to tests/baselines/reference/tscWatch/watchApi/multiFile/semantic-builder-emitOnlyDts.js diff --git a/tests/baselines/reference/tscWatch/watchApi/verifies-that-noEmit-is-handled-on-createSemanticDiagnosticsBuilderProgram.js b/tests/baselines/reference/tscWatch/watchApi/multiFile/verifies-that-noEmit-is-handled-on-createSemanticDiagnosticsBuilderProgram.js similarity index 100% rename from tests/baselines/reference/tscWatch/watchApi/verifies-that-noEmit-is-handled-on-createSemanticDiagnosticsBuilderProgram.js rename to tests/baselines/reference/tscWatch/watchApi/multiFile/verifies-that-noEmit-is-handled-on-createSemanticDiagnosticsBuilderProgram.js diff --git a/tests/baselines/reference/tscWatch/watchApi/when-emitting-with-emitOnlyDtsFiles.js b/tests/baselines/reference/tscWatch/watchApi/multiFile/when-emitting-with-emitOnlyDtsFiles.js similarity index 100% rename from tests/baselines/reference/tscWatch/watchApi/when-emitting-with-emitOnlyDtsFiles.js rename to tests/baselines/reference/tscWatch/watchApi/multiFile/when-emitting-with-emitOnlyDtsFiles.js diff --git a/tests/baselines/reference/tscWatch/watchApi/noEmit-with-composite-with-emit-builder-outFile.js b/tests/baselines/reference/tscWatch/watchApi/outFile/noEmit-with-composite-with-emit-builder.js similarity index 100% rename from tests/baselines/reference/tscWatch/watchApi/noEmit-with-composite-with-emit-builder-outFile.js rename to tests/baselines/reference/tscWatch/watchApi/outFile/noEmit-with-composite-with-emit-builder.js diff --git a/tests/baselines/reference/tscWatch/watchApi/noEmit-with-composite-with-semantic-builder-outFile.js b/tests/baselines/reference/tscWatch/watchApi/outFile/noEmit-with-composite-with-semantic-builder.js similarity index 100% rename from tests/baselines/reference/tscWatch/watchApi/noEmit-with-composite-with-semantic-builder-outFile.js rename to tests/baselines/reference/tscWatch/watchApi/outFile/noEmit-with-composite-with-semantic-builder.js diff --git a/tests/baselines/reference/tscWatch/watchApi/noEmitOnError-with-composite-with-emit-builder-outFile.js b/tests/baselines/reference/tscWatch/watchApi/outFile/noEmitOnError-with-composite-with-emit-builder.js similarity index 100% rename from tests/baselines/reference/tscWatch/watchApi/noEmitOnError-with-composite-with-emit-builder-outFile.js rename to tests/baselines/reference/tscWatch/watchApi/outFile/noEmitOnError-with-composite-with-emit-builder.js diff --git a/tests/baselines/reference/tscWatch/watchApi/noEmitOnError-with-composite-with-semantic-builder-outFile.js b/tests/baselines/reference/tscWatch/watchApi/outFile/noEmitOnError-with-composite-with-semantic-builder.js similarity index 100% rename from tests/baselines/reference/tscWatch/watchApi/noEmitOnError-with-composite-with-semantic-builder-outFile.js rename to tests/baselines/reference/tscWatch/watchApi/outFile/noEmitOnError-with-composite-with-semantic-builder.js diff --git a/tests/baselines/reference/tscWatch/watchApi/outFile/semantic-builder-emitOnlyDts.js b/tests/baselines/reference/tscWatch/watchApi/outFile/semantic-builder-emitOnlyDts.js new file mode 100644 index 0000000000000..72ba2026c9e7f --- /dev/null +++ b/tests/baselines/reference/tscWatch/watchApi/outFile/semantic-builder-emitOnlyDts.js @@ -0,0 +1,249 @@ +currentDirectory:: / useCaseSensitiveFileNames: false +Input:: +//// [/user/username/projects/myproject/tsconfig.json] +{ + "compilerOptions": { + "composite": true, + "noEmitOnError": true, + "outFile": "../outFile.js", + "module": "amd" + } +} + +//// [/user/username/projects/myproject/main.ts] +export const x: string = 10; + +//// [/user/username/projects/myproject/other.ts] +export const y = 10; + +//// [/a/lib/lib.d.ts] +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } +interface Array { length: number; [n: number]: T; } + + +tsc --w +Output:: +>> Screen clear +[HH:MM:SS AM] Starting compilation in watch mode... + +user/username/projects/myproject/main.ts:1:14 - error TS2322: Type 'number' is not assignable to type 'string'. + +1 export const x: string = 10; +   ~ + +[HH:MM:SS AM] Found 1 error. Watching for file changes. + + + + +PolledWatches:: +/user/username/projects/myproject/node_modules/@types: *new* + {"pollingInterval":500} +/user/username/projects/myproject/package.json: *new* + {"pollingInterval":2000} +/user/username/projects/node_modules/@types: *new* + {"pollingInterval":500} +/user/username/projects/package.json: *new* + {"pollingInterval":2000} + +FsWatches:: +/a/lib/lib.d.ts: *new* + {} +/user/username/projects/myproject/main.ts: *new* + {} +/user/username/projects/myproject/other.ts: *new* + {} +/user/username/projects/myproject/tsconfig.json: *new* + {} + +FsWatchesRecursive:: +/user/username/projects/myproject: *new* + {} + +Program root files: [ + "/user/username/projects/myproject/main.ts", + "/user/username/projects/myproject/other.ts" +] +Program options: { + "composite": true, + "noEmitOnError": true, + "outFile": "/user/username/projects/outFile.js", + "module": 2, + "configFilePath": "/user/username/projects/myproject/tsconfig.json" +} +Program structureReused: Not +Program files:: +/a/lib/lib.d.ts +/user/username/projects/myproject/main.ts +/user/username/projects/myproject/other.ts + +No cached semantic diagnostics in the builder:: + +No shapes updated in the builder:: + +exitCode:: ExitStatus.undefined + +Change:: Fix error + +Input:: +//// [/user/username/projects/myproject/main.ts] +export const x = 10; + + +PolledWatches *deleted*:: +/user/username/projects/myproject/node_modules/@types: + {"pollingInterval":500} +/user/username/projects/myproject/package.json: + {"pollingInterval":2000} +/user/username/projects/node_modules/@types: + {"pollingInterval":500} +/user/username/projects/package.json: + {"pollingInterval":2000} + +FsWatches *deleted*:: +/a/lib/lib.d.ts: + {} +/user/username/projects/myproject/main.ts: + {} +/user/username/projects/myproject/other.ts: + {} +/user/username/projects/myproject/tsconfig.json: + {} + +FsWatchesRecursive *deleted*:: +/user/username/projects/myproject: + {} + +Output:: +>> Screen clear +[HH:MM:SS AM] Starting compilation in watch mode... + +[HH:MM:SS AM] Found 0 errors. Watching for file changes. + + + +//// [/user/username/projects/outFile.d.ts] +declare module "main" { + export const x = 10; +} +declare module "other" { + export const y = 10; +} + + +//// [/user/username/projects/outFile.tsbuildinfo] +{"program":{"fileNames":["../../../a/lib/lib.d.ts","./myproject/main.ts","./myproject/other.ts"],"fileInfos":[{"version":"-7698705165-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }","impliedFormat":1},{"version":"-10726455937-export const x = 10;","impliedFormat":1},{"version":"-13729955264-export const y = 10;","impliedFormat":1}],"root":[2,3],"options":{"composite":true,"module":2,"noEmitOnError":true,"outFile":"./outFile.js"},"outSignature":"3483479585-declare module \"main\" {\n export const x = 10;\n}\ndeclare module \"other\" {\n export const y = 10;\n}\n","latestChangedDtsFile":"./outFile.d.ts"},"version":"FakeTSVersion"} + +//// [/user/username/projects/outFile.tsbuildinfo.readable.baseline.txt] +{ + "program": { + "fileNames": [ + "../../../a/lib/lib.d.ts", + "./myproject/main.ts", + "./myproject/other.ts" + ], + "fileInfos": { + "../../../a/lib/lib.d.ts": { + "original": { + "version": "-7698705165-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }", + "impliedFormat": 1 + }, + "version": "-7698705165-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }", + "impliedFormat": "commonjs" + }, + "./myproject/main.ts": { + "original": { + "version": "-10726455937-export const x = 10;", + "impliedFormat": 1 + }, + "version": "-10726455937-export const x = 10;", + "impliedFormat": "commonjs" + }, + "./myproject/other.ts": { + "original": { + "version": "-13729955264-export const y = 10;", + "impliedFormat": 1 + }, + "version": "-13729955264-export const y = 10;", + "impliedFormat": "commonjs" + } + }, + "root": [ + [ + 2, + "./myproject/main.ts" + ], + [ + 3, + "./myproject/other.ts" + ] + ], + "options": { + "composite": true, + "module": 2, + "noEmitOnError": true, + "outFile": "./outFile.js" + }, + "outSignature": "3483479585-declare module \"main\" {\n export const x = 10;\n}\ndeclare module \"other\" {\n export const y = 10;\n}\n", + "latestChangedDtsFile": "./outFile.d.ts" + }, + "version": "FakeTSVersion", + "size": 942 +} + + +PolledWatches:: +/user/username/projects/myproject/node_modules/@types: *new* + {"pollingInterval":500} +/user/username/projects/myproject/package.json: *new* + {"pollingInterval":2000} +/user/username/projects/node_modules/@types: *new* + {"pollingInterval":500} +/user/username/projects/package.json: *new* + {"pollingInterval":2000} + +FsWatches:: +/a/lib/lib.d.ts: *new* + {} +/user/username/projects/myproject/main.ts: *new* + {} +/user/username/projects/myproject/other.ts: *new* + {} +/user/username/projects/myproject/tsconfig.json: *new* + {} + +FsWatchesRecursive:: +/user/username/projects/myproject: *new* + {} + +Program root files: [ + "/user/username/projects/myproject/main.ts", + "/user/username/projects/myproject/other.ts" +] +Program options: { + "composite": true, + "noEmitOnError": true, + "outFile": "/user/username/projects/outFile.js", + "module": 2, + "configFilePath": "/user/username/projects/myproject/tsconfig.json" +} +Program structureReused: Not +Program files:: +/a/lib/lib.d.ts +/user/username/projects/myproject/main.ts +/user/username/projects/myproject/other.ts + +No cached semantic diagnostics in the builder:: + +No shapes updated in the builder:: + +exitCode:: ExitStatus.undefined diff --git a/tests/baselines/reference/tscWatch/watchApi/verifies-that-noEmit-is-handled-on-createSemanticDiagnosticsBuilderProgramwith-outFile.js b/tests/baselines/reference/tscWatch/watchApi/outFile/verifies-that-noEmit-is-handled-on-createSemanticDiagnosticsBuilderProgram.js similarity index 100% rename from tests/baselines/reference/tscWatch/watchApi/verifies-that-noEmit-is-handled-on-createSemanticDiagnosticsBuilderProgramwith-outFile.js rename to tests/baselines/reference/tscWatch/watchApi/outFile/verifies-that-noEmit-is-handled-on-createSemanticDiagnosticsBuilderProgram.js diff --git a/tests/baselines/reference/tscWatch/watchApi/when-emitting-with-emitOnlyDtsFiles-with-outFile.js b/tests/baselines/reference/tscWatch/watchApi/outFile/when-emitting-with-emitOnlyDtsFiles.js similarity index 100% rename from tests/baselines/reference/tscWatch/watchApi/when-emitting-with-emitOnlyDtsFiles-with-outFile.js rename to tests/baselines/reference/tscWatch/watchApi/outFile/when-emitting-with-emitOnlyDtsFiles.js