Skip to content

Commit a95d3cc

Browse files
committed
Cleanup noEmit option
1 parent 7785a87 commit a95d3cc

13 files changed

+54
-95
lines changed

src/compiler/builder.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -966,8 +966,7 @@ namespace ts {
966966
// flags it controls (e.g. `strictNullChecks`) will be retrieved correctly from the buildinfo
967967
optionKey === "strict" ||
968968
// We need to store these to determine whether `lib` files need to be rechecked.
969-
optionKey === "skiplibcheck" || optionKey === "skipdefaultlibcheck" ||
970-
optionKey === "noemit" :
969+
optionKey === "skiplibcheck" || optionKey === "skipdefaultlibcheck" :
971970
optionInfo?.affectsOutFileBuildInfo;
972971
if (emitOption) {
973972
(result ||= {})[name] = convertToReusableCompilerOptionValue(

src/compiler/tsbuildPublic.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1544,7 +1544,7 @@ namespace ts {
15441544

15451545
if (buildInfo.program) {
15461546
if (buildInfo.program.changeFileSet?.length ||
1547-
(!buildInfo.program.options?.noEmit && buildInfo.program.affectedFilesPendingEmit?.length)) {
1547+
(!project.options.noEmit && buildInfo.program.affectedFilesPendingEmit?.length)) {
15481548
return {
15491549
type: UpToDateStatusType.OutOfDateBuildInfo,
15501550
buildInfoFile: buildInfoPath

src/testRunner/unittests/tsbuild/helpers.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,8 @@ interface Symbol {
516516
fileNames: undefined,
517517
fileNamesList: undefined,
518518
fileInfos: sanitizedFileInfos,
519-
options: sanatizeCompilerOptions(readableBuildInfo.program.options),
519+
// Ignore noEmit since that shouldnt be reason to emit the tsbuild info and presence of it in the buildinfo file does not matter
520+
options: { ...readableBuildInfo.program.options, noEmit: undefined },
520521
exportedModulesMap: undefined,
521522
affectedFilesPendingEmit: undefined,
522523
dtsChangeTime: readableBuildInfo.program.dtsChangeTime ? "FakeTime" : undefined,
@@ -527,16 +528,6 @@ interface Symbol {
527528
};
528529
}
529530

530-
function sanatizeCompilerOptions(options: CompilerOptions | undefined) {
531-
if (!options) return options;
532-
let result: CompilerOptions | undefined;
533-
for (const name of getOwnKeys(options).sort(compareStringsCaseSensitive)) {
534-
// Ignore noEmit since that shouldnt be reason to emit the tsbuild info and presence of it in the buildinfo file does not matter
535-
if (name.toLowerCase() !== "noemit") (result ||= {})[name] = options[name];
536-
}
537-
return result;
538-
}
539-
540531
export enum CleanBuildDescrepancy {
541532
CleanFileTextDifferent,
542533
CleanFilePresent,

tests/baselines/reference/tsbuildWatch/noEmit/does-not-go-in-loop-when-watching-when-no-files-are-emitted-with-incremental.js

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ FsWatchesRecursive::
7575
exitCode:: ExitStatus.undefined
7676

7777
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo]
78-
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./a.js","./b.ts"],"fileInfos":[{"version":"3858781397-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }\ninterface ReadonlyArray<T> {}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true},"5381-","5381-"],"options":{"noEmit":true},"referencedMap":[],"exportedModulesMap":[],"semanticDiagnosticsPerFile":[1,2,3],"affectedFilesPendingEmit":[[2,1],[3,1]]},"version":"FakeTSVersion"}
78+
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./a.js","./b.ts"],"fileInfos":[{"version":"3858781397-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }\ninterface ReadonlyArray<T> {}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true},"5381-","5381-"],"referencedMap":[],"exportedModulesMap":[],"semanticDiagnosticsPerFile":[1,2,3],"affectedFilesPendingEmit":[[2,1],[3,1]]},"version":"FakeTSVersion"}
7979

8080
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo.readable.baseline.txt]
8181
{
@@ -100,9 +100,6 @@ exitCode:: ExitStatus.undefined
100100
"signature": "5381-"
101101
}
102102
},
103-
"options": {
104-
"noEmit": true
105-
},
106103
"referencedMap": {},
107104
"exportedModulesMap": {},
108105
"semanticDiagnosticsPerFile": [
@@ -122,7 +119,7 @@ exitCode:: ExitStatus.undefined
122119
]
123120
},
124121
"version": "FakeTSVersion",
125-
"size": 756
122+
"size": 730
126123
}
127124

128125

@@ -225,7 +222,7 @@ FsWatchesRecursive::
225222
exitCode:: ExitStatus.undefined
226223

227224
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo]
228-
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./a.js","./b.ts"],"fileInfos":[{"version":"3858781397-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }\ninterface ReadonlyArray<T> {}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true},{"version":"5029505981-const x = 10;","signature":"-3042032780-declare const x: 10;\n","affectsGlobalScope":true},"5381-"],"options":{"noEmit":true},"referencedMap":[],"exportedModulesMap":[],"semanticDiagnosticsPerFile":[1,2,3],"affectedFilesPendingEmit":[[2,1],[3,1]]},"version":"FakeTSVersion"}
225+
{"program":{"fileNames":["../../../../a/lib/lib.d.ts","./a.js","./b.ts"],"fileInfos":[{"version":"3858781397-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }\ninterface ReadonlyArray<T> {}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true},{"version":"5029505981-const x = 10;","signature":"-3042032780-declare const x: 10;\n","affectsGlobalScope":true},"5381-"],"referencedMap":[],"exportedModulesMap":[],"semanticDiagnosticsPerFile":[1,2,3],"affectedFilesPendingEmit":[[2,1],[3,1]]},"version":"FakeTSVersion"}
229226

230227
//// [/user/username/projects/myproject/tsconfig.tsbuildinfo.readable.baseline.txt]
231228
{
@@ -251,9 +248,6 @@ exitCode:: ExitStatus.undefined
251248
"signature": "5381-"
252249
}
253250
},
254-
"options": {
255-
"noEmit": true
256-
},
257251
"referencedMap": {},
258252
"exportedModulesMap": {},
259253
"semanticDiagnosticsPerFile": [
@@ -273,6 +267,6 @@ exitCode:: ExitStatus.undefined
273267
]
274268
},
275269
"version": "FakeTSVersion",
276-
"size": 862
270+
"size": 836
277271
}
278272

tests/baselines/reference/tsc/incremental/noEmit-changes-composite.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated
314314

315315

316316
//// [/src/project/tsconfig.tsbuildinfo]
317-
{"program":{"fileNames":["../../lib/lib.d.ts","./src/class.ts","./src/indirectclass.ts","./src/directuse.ts","./src/indirectuse.ts","./src/nochangefile.ts","./src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }\ninterface ReadonlyArray<T> {}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true},{"version":"1786859709-export class classC {\n prop1 = 1;\n}","signature":"-3790894605-export declare class classC {\r\n prop1: number;\r\n}\r\n"},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","signature":"-9860349972-import { classC } from './class';\r\nexport declare class indirectClass {\r\n classC: classC;\r\n}\r\n"},"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;",{"version":"6714567633-export function writeLog(s: string) {\n}","signature":"8117292349-export declare function writeLog(s: string): void;\r\n"},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","signature":"-4920141752-declare function someFunc(arguments: boolean, ...rest: any[]): void;\r\n","affectsGlobalScope":true}],"options":{"composite":true,"noEmit":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2],[5,1]],"exportedModulesMap":[[4,1],[3,2],[5,1]],"semanticDiagnosticsPerFile":[1,2,[4,[{"file":"./src/directuse.ts","start":76,"length":4,"code":2551,"category":1,"messageText":"Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'?","relatedInformation":[{"file":"./src/class.ts","start":26,"length":5,"messageText":"'prop1' is declared here.","category":3,"code":2728}]}]],3,[5,[{"file":"./src/indirectuse.ts","start":76,"length":4,"code":2551,"category":1,"messageText":"Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'?","relatedInformation":[{"file":"./src/class.ts","start":26,"length":5,"messageText":"'prop1' is declared here.","category":3,"code":2728}]}]],6,[7,[{"file":"./src/nochangefilewithemitspecificerror.ts","start":18,"length":18,"messageText":"Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters.","category":1,"code":2396,"skippedOn":"noEmit"}]]],"affectedFilesPendingEmit":[[2,1],[4,0],[3,1],[5,0]],"emitSignatures":[[2,"-6712382238-export declare class classC {\r\n prop: number;\r\n}\r\n"],[4,"-4882119183-export {};\r\n"],[5,"-4882119183-export {};\r\n"]],"dtsChangeTime":27000},"version":"FakeTSVersion"}
317+
{"program":{"fileNames":["../../lib/lib.d.ts","./src/class.ts","./src/indirectclass.ts","./src/directuse.ts","./src/indirectuse.ts","./src/nochangefile.ts","./src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }\ninterface ReadonlyArray<T> {}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true},{"version":"1786859709-export class classC {\n prop1 = 1;\n}","signature":"-3790894605-export declare class classC {\r\n prop1: number;\r\n}\r\n"},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","signature":"-9860349972-import { classC } from './class';\r\nexport declare class indirectClass {\r\n classC: classC;\r\n}\r\n"},"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;",{"version":"6714567633-export function writeLog(s: string) {\n}","signature":"8117292349-export declare function writeLog(s: string): void;\r\n"},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","signature":"-4920141752-declare function someFunc(arguments: boolean, ...rest: any[]): void;\r\n","affectsGlobalScope":true}],"options":{"composite":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2],[5,1]],"exportedModulesMap":[[4,1],[3,2],[5,1]],"semanticDiagnosticsPerFile":[1,2,[4,[{"file":"./src/directuse.ts","start":76,"length":4,"code":2551,"category":1,"messageText":"Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'?","relatedInformation":[{"file":"./src/class.ts","start":26,"length":5,"messageText":"'prop1' is declared here.","category":3,"code":2728}]}]],3,[5,[{"file":"./src/indirectuse.ts","start":76,"length":4,"code":2551,"category":1,"messageText":"Property 'prop' does not exist on type 'classC'. Did you mean 'prop1'?","relatedInformation":[{"file":"./src/class.ts","start":26,"length":5,"messageText":"'prop1' is declared here.","category":3,"code":2728}]}]],6,[7,[{"file":"./src/nochangefilewithemitspecificerror.ts","start":18,"length":18,"messageText":"Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters.","category":1,"code":2396,"skippedOn":"noEmit"}]]],"affectedFilesPendingEmit":[[2,1],[4,0],[3,1],[5,0]],"emitSignatures":[[2,"-6712382238-export declare class classC {\r\n prop: number;\r\n}\r\n"],[4,"-4882119183-export {};\r\n"],[5,"-4882119183-export {};\r\n"]],"dtsChangeTime":27000},"version":"FakeTSVersion"}
318318

319319
//// [/src/project/tsconfig.tsbuildinfo.readable.baseline.txt]
320320
{
@@ -369,8 +369,7 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated
369369
}
370370
},
371371
"options": {
372-
"composite": true,
373-
"noEmit": true
372+
"composite": true
374373
},
375374
"referencedMap": {
376375
"./src/directuse.ts": [
@@ -495,7 +494,7 @@ exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated
495494
"dtsChangeTime": 27000
496495
},
497496
"version": "FakeTSVersion",
498-
"size": 2953
497+
"size": 2939
499498
}
500499

501500

@@ -1084,7 +1083,7 @@ exitCode:: ExitStatus.Success
10841083

10851084

10861085
//// [/src/project/tsconfig.tsbuildinfo]
1087-
{"program":{"fileNames":["../../lib/lib.d.ts","./src/class.ts","./src/indirectclass.ts","./src/directuse.ts","./src/indirectuse.ts","./src/nochangefile.ts","./src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }\ninterface ReadonlyArray<T> {}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true},{"version":"545032748-export class classC {\n prop = 1;\n}","signature":"-6712382238-export declare class classC {\r\n prop: number;\r\n}\r\n"},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","signature":"-9860349972-import { classC } from './class';\r\nexport declare class indirectClass {\r\n classC: classC;\r\n}\r\n"},"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;",{"version":"6714567633-export function writeLog(s: string) {\n}","signature":"8117292349-export declare function writeLog(s: string): void;\r\n"},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","signature":"-4920141752-declare function someFunc(arguments: boolean, ...rest: any[]): void;\r\n","affectsGlobalScope":true}],"options":{"composite":true,"noEmit":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2],[5,1]],"exportedModulesMap":[[4,1],[3,2],[5,1]],"semanticDiagnosticsPerFile":[1,2,4,3,5,6,[7,[{"file":"./src/nochangefilewithemitspecificerror.ts","start":18,"length":18,"messageText":"Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters.","category":1,"code":2396,"skippedOn":"noEmit"}]]],"affectedFilesPendingEmit":[[2,1],[4,0],[3,1],[5,0]],"emitSignatures":[[2,"-3790894605-export declare class classC {\r\n prop1: number;\r\n}\r\n"],[4,"-4882119183-export {};\r\n"],[5,"-4882119183-export {};\r\n"]],"dtsChangeTime":49000},"version":"FakeTSVersion"}
1086+
{"program":{"fileNames":["../../lib/lib.d.ts","./src/class.ts","./src/indirectclass.ts","./src/directuse.ts","./src/indirectuse.ts","./src/nochangefile.ts","./src/nochangefilewithemitspecificerror.ts"],"fileInfos":[{"version":"3858781397-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }\ninterface ReadonlyArray<T> {}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true},{"version":"545032748-export class classC {\n prop = 1;\n}","signature":"-6712382238-export declare class classC {\r\n prop: number;\r\n}\r\n"},{"version":"6324910780-import { classC } from './class';\nexport class indirectClass {\n classC = new classC();\n}","signature":"-9860349972-import { classC } from './class';\r\nexport declare class indirectClass {\r\n classC: classC;\r\n}\r\n"},"-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;","-8953710208-import { indirectClass } from './indirectClass';\nnew indirectClass().classC.prop;",{"version":"6714567633-export function writeLog(s: string) {\n}","signature":"8117292349-export declare function writeLog(s: string): void;\r\n"},{"version":"-19339541508-function someFunc(arguments: boolean, ...rest: any[]) {\n}","signature":"-4920141752-declare function someFunc(arguments: boolean, ...rest: any[]): void;\r\n","affectsGlobalScope":true}],"options":{"composite":true},"fileIdsList":[[3],[2]],"referencedMap":[[4,1],[3,2],[5,1]],"exportedModulesMap":[[4,1],[3,2],[5,1]],"semanticDiagnosticsPerFile":[1,2,4,3,5,6,[7,[{"file":"./src/nochangefilewithemitspecificerror.ts","start":18,"length":18,"messageText":"Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters.","category":1,"code":2396,"skippedOn":"noEmit"}]]],"affectedFilesPendingEmit":[[2,1],[4,0],[3,1],[5,0]],"emitSignatures":[[2,"-3790894605-export declare class classC {\r\n prop1: number;\r\n}\r\n"],[4,"-4882119183-export {};\r\n"],[5,"-4882119183-export {};\r\n"]],"dtsChangeTime":49000},"version":"FakeTSVersion"}
10881087

10891088
//// [/src/project/tsconfig.tsbuildinfo.readable.baseline.txt]
10901089
{
@@ -1139,8 +1138,7 @@ exitCode:: ExitStatus.Success
11391138
}
11401139
},
11411140
"options": {
1142-
"composite": true,
1143-
"noEmit": true
1141+
"composite": true
11441142
},
11451143
"referencedMap": {
11461144
"./src/directuse.ts": [
@@ -1221,7 +1219,7 @@ exitCode:: ExitStatus.Success
12211219
"dtsChangeTime": 49000
12221220
},
12231221
"version": "FakeTSVersion",
1224-
"size": 2337
1222+
"size": 2323
12251223
}
12261224

12271225

0 commit comments

Comments
 (0)