From bb4872b0639144c63ca6dff3240c725bc524edd4 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 15 Oct 2019 08:37:23 -0700 Subject: [PATCH 1/4] Do not write build info if there are no files to emit --- src/compiler/builder.ts | 3 +++ .../when-passing-filename-for-buildinfo-on-commandline.js | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/compiler/builder.ts b/src/compiler/builder.ts index a1ae9e133fb..010aabb57fe 100644 --- a/src/compiler/builder.ts +++ b/src/compiler/builder.ts @@ -251,6 +251,9 @@ namespace ts { state.seenAffectedFiles = createMap(); } + state.emittedBuildInfo = !state.changedFilesSet.size && + !state.affectedFilesPendingEmit; + return state; } diff --git a/tests/baselines/reference/tsc/incremental/incremental-declaration-doesnt-change/when-passing-filename-for-buildinfo-on-commandline.js b/tests/baselines/reference/tsc/incremental/incremental-declaration-doesnt-change/when-passing-filename-for-buildinfo-on-commandline.js index fae2a9ef15e..2b0a9fc8793 100644 --- a/tests/baselines/reference/tsc/incremental/incremental-declaration-doesnt-change/when-passing-filename-for-buildinfo-on-commandline.js +++ b/tests/baselines/reference/tsc/incremental/incremental-declaration-doesnt-change/when-passing-filename-for-buildinfo-on-commandline.js @@ -3,4 +3,3 @@ exitCode:: 0 -//// [/src/project/.tsbuildinfo] file written with same contents From f32c2eac655f5491f0094e8b401797e6ea2632fa Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 16 Oct 2019 08:37:06 -0700 Subject: [PATCH 2/4] Some changes to incremental tests --- src/testRunner/unittests/tsc/helpers.ts | 8 +++++++- src/testRunner/unittests/tsc/incremental.ts | 8 +++----- .../when-passing-filename-for-buildinfo-on-commandline.js | 2 +- .../when-passing-rootDir-from-commandline.js | 5 +++++ 4 files changed, 16 insertions(+), 7 deletions(-) rename tests/baselines/reference/tsc/incremental/{incremental-declaration-doesnt-change => no-change-run}/when-passing-filename-for-buildinfo-on-commandline.js (60%) create mode 100644 tests/baselines/reference/tsc/incremental/no-change-run/when-passing-rootDir-from-commandline.js diff --git a/src/testRunner/unittests/tsc/helpers.ts b/src/testRunner/unittests/tsc/helpers.ts index 5d5f9517e65..85eb2a886e0 100644 --- a/src/testRunner/unittests/tsc/helpers.ts +++ b/src/testRunner/unittests/tsc/helpers.ts @@ -169,9 +169,15 @@ namespace ts { Initial = "initial-build", IncrementalDtsChange = "incremental-declaration-changes", IncrementalDtsUnchanged = "incremental-declaration-doesnt-change", - IncrementalHeadersChange = "incremental-headers-change-without-dts-changes" + IncrementalHeadersChange = "incremental-headers-change-without-dts-changes", + NoChangeRun ="no-change-run" } + export const noChangeRun: TscIncremental = { + buildKind: BuildKind.NoChangeRun, + modifyFs: noop + }; + export interface TscCompile { scenario: string; subScenario: string; diff --git a/src/testRunner/unittests/tsc/incremental.ts b/src/testRunner/unittests/tsc/incremental.ts index 86d6cefe3b6..b3903b37d08 100644 --- a/src/testRunner/unittests/tsc/incremental.ts +++ b/src/testRunner/unittests/tsc/incremental.ts @@ -17,13 +17,10 @@ namespace ts { }`, }), commandLineArgs: ["--incremental", "--p", "src/project", "--tsBuildInfoFile", "src/project/.tsbuildinfo"], - incrementalScenarios: [{ - buildKind: BuildKind.IncrementalDtsUnchanged, - modifyFs: noop, - }] + incrementalScenarios: [noChangeRun] }); - verifyTsc({ + verifyTscIncrementalEdits({ scenario: "incremental", subScenario: "when passing rootDir from commandline", fs: () => loadProjectFromFiles({ @@ -37,6 +34,7 @@ namespace ts { }`, }), commandLineArgs: ["--p", "src/project", "--rootDir", "src/project/src"], + incrementalScenarios: [noChangeRun] }); }); } diff --git a/tests/baselines/reference/tsc/incremental/incremental-declaration-doesnt-change/when-passing-filename-for-buildinfo-on-commandline.js b/tests/baselines/reference/tsc/incremental/no-change-run/when-passing-filename-for-buildinfo-on-commandline.js similarity index 60% rename from tests/baselines/reference/tsc/incremental/incremental-declaration-doesnt-change/when-passing-filename-for-buildinfo-on-commandline.js rename to tests/baselines/reference/tsc/incremental/no-change-run/when-passing-filename-for-buildinfo-on-commandline.js index 2b0a9fc8793..5ebc3de7b42 100644 --- a/tests/baselines/reference/tsc/incremental/incremental-declaration-doesnt-change/when-passing-filename-for-buildinfo-on-commandline.js +++ b/tests/baselines/reference/tsc/incremental/no-change-run/when-passing-filename-for-buildinfo-on-commandline.js @@ -1,4 +1,4 @@ -//// [/lib/incremental-declaration-doesnt-changeOutput.txt] +//// [/lib/no-change-runOutput.txt] /lib/tsc --incremental --p src/project --tsBuildInfoFile src/project/.tsbuildinfo exitCode:: 0 diff --git a/tests/baselines/reference/tsc/incremental/no-change-run/when-passing-rootDir-from-commandline.js b/tests/baselines/reference/tsc/incremental/no-change-run/when-passing-rootDir-from-commandline.js new file mode 100644 index 00000000000..a20c3d3f615 --- /dev/null +++ b/tests/baselines/reference/tsc/incremental/no-change-run/when-passing-rootDir-from-commandline.js @@ -0,0 +1,5 @@ +//// [/lib/no-change-runOutput.txt] +/lib/tsc --p src/project --rootDir src/project/src +exitCode:: 0 + + From 5b5f88ead0aa4a0fdfe4e4721fef30896a4836a4 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 17 Oct 2019 11:52:22 -0700 Subject: [PATCH 3/4] Add test with incremental program with only d.ts files --- src/testRunner/unittests/tsc/incremental.ts | 18 ++++++++ .../with-only-dts-files.js | 41 +++++++++++++++++++ .../initial-build/with-only-dts-files.js | 38 +++++++++++++++++ .../no-change-run/with-only-dts-files.js | 5 +++ 4 files changed, 102 insertions(+) create mode 100644 tests/baselines/reference/tsc/incremental/incremental-declaration-doesnt-change/with-only-dts-files.js create mode 100644 tests/baselines/reference/tsc/incremental/initial-build/with-only-dts-files.js create mode 100644 tests/baselines/reference/tsc/incremental/no-change-run/with-only-dts-files.js diff --git a/src/testRunner/unittests/tsc/incremental.ts b/src/testRunner/unittests/tsc/incremental.ts index b3903b37d08..afbee7c368f 100644 --- a/src/testRunner/unittests/tsc/incremental.ts +++ b/src/testRunner/unittests/tsc/incremental.ts @@ -36,5 +36,23 @@ namespace ts { commandLineArgs: ["--p", "src/project", "--rootDir", "src/project/src"], incrementalScenarios: [noChangeRun] }); + + verifyTscIncrementalEdits({ + scenario: "incremental", + subScenario: "with only dts files", + fs: () => loadProjectFromFiles({ + "/src/project/src/main.d.ts": "export const x = 10;", + "/src/project/src/another.d.ts": "export const y = 10;", + "/src/project/tsconfig.json": "{}", + }), + commandLineArgs: ["--incremental", "--p", "src/project"], + incrementalScenarios: [ + noChangeRun, + { + buildKind: BuildKind.IncrementalDtsUnchanged, + modifyFs: fs => appendText(fs, "/src/project/src/main.d.ts", "export const xy = 100;") + } + ] + }); }); } diff --git a/tests/baselines/reference/tsc/incremental/incremental-declaration-doesnt-change/with-only-dts-files.js b/tests/baselines/reference/tsc/incremental/incremental-declaration-doesnt-change/with-only-dts-files.js new file mode 100644 index 00000000000..5c0420487b1 --- /dev/null +++ b/tests/baselines/reference/tsc/incremental/incremental-declaration-doesnt-change/with-only-dts-files.js @@ -0,0 +1,41 @@ +//// [/lib/incremental-declaration-doesnt-changeOutput.txt] +/lib/tsc --incremental --p src/project +exitCode:: 0 + + +//// [/src/project/src/main.d.ts] +export const x = 10;export const xy = 100; + +//// [/src/project/tsconfig.tsbuildinfo] +{ + "program": { + "fileInfos": { + "../../lib/lib.d.ts": { + "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; };", + "signature": "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; };" + }, + "./src/another.d.ts": { + "version": "-13729955264-export const y = 10;", + "signature": "-13729955264-export const y = 10;" + }, + "./src/main.d.ts": { + "version": "-10808461502-export const x = 10;export const xy = 100;", + "signature": "-10808461502-export const x = 10;export const xy = 100;" + } + }, + "options": { + "incremental": true, + "project": "./", + "configFilePath": "./tsconfig.json" + }, + "referencedMap": {}, + "exportedModulesMap": {}, + "semanticDiagnosticsPerFile": [ + "../../lib/lib.d.ts", + "./src/another.d.ts", + "./src/main.d.ts" + ] + }, + "version": "FakeTSVersion" +} + diff --git a/tests/baselines/reference/tsc/incremental/initial-build/with-only-dts-files.js b/tests/baselines/reference/tsc/incremental/initial-build/with-only-dts-files.js new file mode 100644 index 00000000000..518277d3d6c --- /dev/null +++ b/tests/baselines/reference/tsc/incremental/initial-build/with-only-dts-files.js @@ -0,0 +1,38 @@ +//// [/lib/initial-buildOutput.txt] +/lib/tsc --incremental --p src/project +exitCode:: 0 + + +//// [/src/project/tsconfig.tsbuildinfo] +{ + "program": { + "fileInfos": { + "../../lib/lib.d.ts": { + "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; };", + "signature": "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; };" + }, + "./src/another.d.ts": { + "version": "-13729955264-export const y = 10;", + "signature": "-13729955264-export const y = 10;" + }, + "./src/main.d.ts": { + "version": "-10726455937-export const x = 10;", + "signature": "-10726455937-export const x = 10;" + } + }, + "options": { + "incremental": true, + "project": "./", + "configFilePath": "./tsconfig.json" + }, + "referencedMap": {}, + "exportedModulesMap": {}, + "semanticDiagnosticsPerFile": [ + "../../lib/lib.d.ts", + "./src/another.d.ts", + "./src/main.d.ts" + ] + }, + "version": "FakeTSVersion" +} + diff --git a/tests/baselines/reference/tsc/incremental/no-change-run/with-only-dts-files.js b/tests/baselines/reference/tsc/incremental/no-change-run/with-only-dts-files.js new file mode 100644 index 00000000000..45d86bb053b --- /dev/null +++ b/tests/baselines/reference/tsc/incremental/no-change-run/with-only-dts-files.js @@ -0,0 +1,5 @@ +//// [/lib/no-change-runOutput.txt] +/lib/tsc --incremental --p src/project +exitCode:: 0 + + From afee423a84cf4d487e5156ef359e7ece40c3c944 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 17 Oct 2019 11:54:26 -0700 Subject: [PATCH 4/4] Feedback on formatting --- src/compiler/builder.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/compiler/builder.ts b/src/compiler/builder.ts index 010aabb57fe..dc3b108b983 100644 --- a/src/compiler/builder.ts +++ b/src/compiler/builder.ts @@ -251,9 +251,7 @@ namespace ts { state.seenAffectedFiles = createMap(); } - state.emittedBuildInfo = !state.changedFilesSet.size && - !state.affectedFilesPendingEmit; - + state.emittedBuildInfo = !state.changedFilesSet.size && !state.affectedFilesPendingEmit; return state; }