Skip to content

Commit 7734528

Browse files
committed
No need to check input time stamp before buildinfo
1 parent 5c12067 commit 7734528

File tree

154 files changed

+373
-1126
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

154 files changed

+373
-1126
lines changed

src/compiler/tsbuildPublic.ts

+37-38
Original file line numberDiff line numberDiff line change
@@ -1469,39 +1469,18 @@ namespace ts {
14691469
if (!force) (referenceStatuses ||= []).push({ ref, refStatus });
14701470
}
14711471
}
1472-
1473-
// Check output files
1474-
let newestInputFileName: string = undefined!;
1475-
let newestInputFileTime = minimumDate;
1476-
const { host } = state;
1477-
// Get timestamps of input files
1478-
for (const inputFile of project.fileNames) {
1479-
const inputTime = getModifiedTime(state, inputFile);
1480-
if (inputTime === missingFileModifiedTime) {
1481-
return {
1482-
type: UpToDateStatusType.Unbuildable,
1483-
reason: `${inputFile} does not exist`
1484-
};
1485-
}
1486-
1487-
if (!force) {
1488-
if (inputTime > newestInputFileTime) {
1489-
newestInputFileName = inputFile;
1490-
newestInputFileTime = inputTime;
1491-
}
1492-
}
1493-
}
1494-
14951472
if (force) return { type: UpToDateStatusType.ForceBuild };
14961473

1474+
// Check buildinfo first
1475+
const { host } = state;
14971476
const buildInfoPath = getTsBuildInfoEmitOutputFilePath(project.options);
1498-
// Now see if all outputs are newer than the newest input
14991477
let oldestOutputFileName = "(none)";
15001478
let oldestOutputFileTime = maximumDate;
15011479
let newestDeclarationFileContentChangedTime;
1480+
let buildInfoTime: Date | undefined;
15021481
if (buildInfoPath) {
1503-
const outputTime = ts.getModifiedTime(host, buildInfoPath);
1504-
if (outputTime === missingFileModifiedTime) {
1482+
buildInfoTime = ts.getModifiedTime(host, buildInfoPath);
1483+
if (buildInfoTime === missingFileModifiedTime) {
15051484
return {
15061485
type: UpToDateStatusType.OutputMissing,
15071486
missingOutputFileName: buildInfoPath
@@ -1519,15 +1498,6 @@ namespace ts {
15191498
}
15201499
}
15211500

1522-
// If an output is older than the newest input, we can stop checking
1523-
if (outputTime < newestInputFileTime) {
1524-
return {
1525-
type: UpToDateStatusType.OutOfDateWithSelf,
1526-
outOfDateOutputFileName: buildInfoPath,
1527-
newerInputFileName: newestInputFileName
1528-
};
1529-
}
1530-
15311501
if (buildInfo.program) {
15321502
if (buildInfo.program.changeFileSet?.length ||
15331503
(!buildInfo.program.options?.noEmit && buildInfo.program.affectedFilesPendingEmit?.length)) {
@@ -1538,15 +1508,44 @@ namespace ts {
15381508
}
15391509
}
15401510

1541-
oldestOutputFileTime = outputTime;
1511+
oldestOutputFileTime = buildInfoTime;
15421512
oldestOutputFileName = buildInfoPath;
15431513
}
1514+
1515+
// Check input files
1516+
let newestInputFileName: string = undefined!;
1517+
let newestInputFileTime = minimumDate;
1518+
// Get timestamps of input files
1519+
for (const inputFile of project.fileNames) {
1520+
const inputTime = getModifiedTime(state, inputFile);
1521+
if (inputTime === missingFileModifiedTime) {
1522+
return {
1523+
type: UpToDateStatusType.Unbuildable,
1524+
reason: `${inputFile} does not exist`
1525+
};
1526+
}
1527+
1528+
// If an buildInfo is older than the newest input, we can stop checking
1529+
if (buildInfoTime && buildInfoTime < inputTime) {
1530+
return {
1531+
type: UpToDateStatusType.OutOfDateWithSelf,
1532+
outOfDateOutputFileName: buildInfoPath!,
1533+
newerInputFileName: inputFile
1534+
};
1535+
}
1536+
1537+
if (inputTime > newestInputFileTime) {
1538+
newestInputFileName = inputFile;
1539+
newestInputFileTime = inputTime;
1540+
}
1541+
}
1542+
1543+
// Now see if all outputs are newer than the newest input
15441544
// Dont check output timestamps if we have buildinfo telling us output is uptodate
1545-
else {
1545+
if (!buildInfoPath) {
15461546
// Collect the expected outputs of this project
15471547
const outputs = getAllProjectOutputs(project, !host.useCaseSensitiveFileNames());
15481548
for (const output of outputs) {
1549-
if (buildInfoPath === output) continue;
15501549
// Output is missing; can stop checking
15511550
const outputTime = ts.getModifiedTime(state.host, output);
15521551
if (outputTime === missingFileModifiedTime) {

tests/baselines/reference/tsbuild/amdModulesWithOut/modules-and-globals-mixed-in-amd.js

+2-10
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,7 @@ Output::
8484
exitCode:: ExitStatus.Success
8585

8686
getModifiedTime:: {
87-
"/src/lib/file0.ts": 1,
88-
"/src/lib/file1.ts": 1,
89-
"/src/lib/file2.ts": 1,
90-
"/src/lib/global.ts": 1,
9187
"/src/lib/module.tsbuildinfo": 1,
92-
"/src/app/file3.ts": 1,
93-
"/src/app/file4.ts": 1,
9488
"/src/app/module.tsbuildinfo": 1
9589
}
9690

@@ -999,15 +993,13 @@ Output::
999993
exitCode:: ExitStatus.Success
1000994

1001995
getModifiedTime:: {
996+
"/src/lib/module.tsbuildinfo": 1,
1002997
"/src/lib/file0.ts": 1,
1003998
"/src/lib/file1.ts": 1,
1004-
"/src/lib/file2.ts": 1,
1005-
"/src/lib/global.ts": 1,
1006-
"/src/lib/module.tsbuildinfo": 1,
1007999
"/src/lib/module.d.ts": 1,
1000+
"/src/app/module.tsbuildinfo": 1,
10081001
"/src/app/file3.ts": 1,
10091002
"/src/app/file4.ts": 1,
1010-
"/src/app/module.tsbuildinfo": 1,
10111003
"/src/app/tsconfig.json": 1,
10121004
"/src/app/module.d.ts": 1
10131005
}

tests/baselines/reference/tsbuild/amdModulesWithOut/multiple-emitHelpers-in-all-projects.js

+4-14
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,7 @@ Output::
9696
exitCode:: ExitStatus.Success
9797

9898
getModifiedTime:: {
99-
"/src/lib/file0.ts": 1,
100-
"/src/lib/file1.ts": 1,
101-
"/src/lib/file2.ts": 1,
102-
"/src/lib/global.ts": 1,
10399
"/src/lib/module.tsbuildinfo": 1,
104-
"/src/app/file3.ts": 1,
105-
"/src/app/file4.ts": 1,
106100
"/src/app/module.tsbuildinfo": 1
107101
}
108102

@@ -2176,15 +2170,13 @@ Output::
21762170
exitCode:: ExitStatus.Success
21772171

21782172
getModifiedTime:: {
2173+
"/src/lib/module.tsbuildinfo": 1,
21792174
"/src/lib/file0.ts": 1,
21802175
"/src/lib/file1.ts": 1,
2181-
"/src/lib/file2.ts": 1,
2182-
"/src/lib/global.ts": 1,
2183-
"/src/lib/module.tsbuildinfo": 1,
21842176
"/src/lib/module.d.ts": 1,
2177+
"/src/app/module.tsbuildinfo": 1,
21852178
"/src/app/file3.ts": 1,
21862179
"/src/app/file4.ts": 1,
2187-
"/src/app/module.tsbuildinfo": 1,
21882180
"/src/app/tsconfig.json": 1,
21892181
"/src/app/module.d.ts": 1
21902182
}
@@ -3818,15 +3810,13 @@ Output::
38183810
exitCode:: ExitStatus.Success
38193811

38203812
getModifiedTime:: {
3813+
"/src/lib/module.tsbuildinfo": 1,
38213814
"/src/lib/file0.ts": 1,
38223815
"/src/lib/file1.ts": 1,
3823-
"/src/lib/file2.ts": 1,
3824-
"/src/lib/global.ts": 1,
3825-
"/src/lib/module.tsbuildinfo": 1,
38263816
"/src/lib/module.d.ts": 1,
3817+
"/src/app/module.tsbuildinfo": 1,
38273818
"/src/app/file3.ts": 1,
38283819
"/src/app/file4.ts": 1,
3829-
"/src/app/module.tsbuildinfo": 1,
38303820
"/src/app/tsconfig.json": 1,
38313821
"/src/app/module.d.ts": 1
38323822
}

tests/baselines/reference/tsbuild/amdModulesWithOut/multiple-prologues-in-all-projects.js

+4-14
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,7 @@ Output::
8989
exitCode:: ExitStatus.Success
9090

9191
getModifiedTime:: {
92-
"/src/lib/file0.ts": 1,
93-
"/src/lib/file1.ts": 1,
94-
"/src/lib/file2.ts": 1,
95-
"/src/lib/global.ts": 1,
9692
"/src/lib/module.tsbuildinfo": 1,
97-
"/src/app/file3.ts": 1,
98-
"/src/app/file4.ts": 1,
9993
"/src/app/module.tsbuildinfo": 1
10094
}
10195

@@ -1285,15 +1279,13 @@ Output::
12851279
exitCode:: ExitStatus.Success
12861280

12871281
getModifiedTime:: {
1282+
"/src/lib/module.tsbuildinfo": 1,
12881283
"/src/lib/file0.ts": 1,
12891284
"/src/lib/file1.ts": 1,
1290-
"/src/lib/file2.ts": 1,
1291-
"/src/lib/global.ts": 1,
1292-
"/src/lib/module.tsbuildinfo": 1,
12931285
"/src/lib/module.d.ts": 1,
1286+
"/src/app/module.tsbuildinfo": 1,
12941287
"/src/app/file3.ts": 1,
12951288
"/src/app/file4.ts": 1,
1296-
"/src/app/module.tsbuildinfo": 1,
12971289
"/src/app/tsconfig.json": 1,
12981290
"/src/app/module.d.ts": 1
12991291
}
@@ -2199,15 +2191,13 @@ Output::
21992191
exitCode:: ExitStatus.Success
22002192

22012193
getModifiedTime:: {
2194+
"/src/lib/module.tsbuildinfo": 1,
22022195
"/src/lib/file0.ts": 1,
22032196
"/src/lib/file1.ts": 1,
2204-
"/src/lib/file2.ts": 1,
2205-
"/src/lib/global.ts": 1,
2206-
"/src/lib/module.tsbuildinfo": 1,
22072197
"/src/lib/module.d.ts": 1,
2198+
"/src/app/module.tsbuildinfo": 1,
22082199
"/src/app/file3.ts": 1,
22092200
"/src/app/file4.ts": 1,
2210-
"/src/app/module.tsbuildinfo": 1,
22112201
"/src/app/tsconfig.json": 1,
22122202
"/src/app/module.d.ts": 1
22132203
}

tests/baselines/reference/tsbuild/amdModulesWithOut/shebang-in-all-projects.js

+2-10
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,7 @@ Output::
8787
exitCode:: ExitStatus.Success
8888

8989
getModifiedTime:: {
90-
"/src/lib/file0.ts": 1,
91-
"/src/lib/file1.ts": 1,
92-
"/src/lib/file2.ts": 1,
93-
"/src/lib/global.ts": 1,
9490
"/src/lib/module.tsbuildinfo": 1,
95-
"/src/app/file3.ts": 1,
96-
"/src/app/file4.ts": 1,
9791
"/src/app/module.tsbuildinfo": 1
9892
}
9993

@@ -1021,15 +1015,13 @@ Output::
10211015
exitCode:: ExitStatus.Success
10221016

10231017
getModifiedTime:: {
1018+
"/src/lib/module.tsbuildinfo": 1,
10241019
"/src/lib/file0.ts": 1,
10251020
"/src/lib/file1.ts": 1,
1026-
"/src/lib/file2.ts": 1,
1027-
"/src/lib/global.ts": 1,
1028-
"/src/lib/module.tsbuildinfo": 1,
10291021
"/src/lib/module.d.ts": 1,
1022+
"/src/app/module.tsbuildinfo": 1,
10301023
"/src/app/file3.ts": 1,
10311024
"/src/app/file4.ts": 1,
1032-
"/src/app/module.tsbuildinfo": 1,
10331025
"/src/app/tsconfig.json": 1,
10341026
"/src/app/module.d.ts": 1
10351027
}

tests/baselines/reference/tsbuild/amdModulesWithOut/stripInternal.js

+4-14
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,7 @@ Output::
110110
exitCode:: ExitStatus.Success
111111

112112
getModifiedTime:: {
113-
"/src/lib/file0.ts": 1,
114-
"/src/lib/file1.ts": 1,
115-
"/src/lib/file2.ts": 1,
116-
"/src/lib/global.ts": 1,
117113
"/src/lib/module.tsbuildinfo": 1,
118-
"/src/app/file3.ts": 1,
119-
"/src/app/file4.ts": 1,
120114
"/src/app/module.tsbuildinfo": 1
121115
}
122116

@@ -4926,15 +4920,13 @@ Output::
49264920
exitCode:: ExitStatus.Success
49274921

49284922
getModifiedTime:: {
4923+
"/src/lib/module.tsbuildinfo": 1,
49294924
"/src/lib/file0.ts": 1,
49304925
"/src/lib/file1.ts": 1,
4931-
"/src/lib/file2.ts": 1,
4932-
"/src/lib/global.ts": 1,
4933-
"/src/lib/module.tsbuildinfo": 1,
49344926
"/src/lib/module.d.ts": 1,
4927+
"/src/app/module.tsbuildinfo": 1,
49354928
"/src/app/file3.ts": 1,
49364929
"/src/app/file4.ts": 1,
4937-
"/src/app/module.tsbuildinfo": 1,
49384930
"/src/app/tsconfig.json": 1,
49394931
"/src/app/module.d.ts": 1
49404932
}
@@ -8759,15 +8751,13 @@ Output::
87598751
exitCode:: ExitStatus.Success
87608752

87618753
getModifiedTime:: {
8754+
"/src/lib/module.tsbuildinfo": 1,
87628755
"/src/lib/file0.ts": 1,
87638756
"/src/lib/file1.ts": 1,
8764-
"/src/lib/file2.ts": 1,
8765-
"/src/lib/global.ts": 1,
8766-
"/src/lib/module.tsbuildinfo": 1,
87678757
"/src/lib/module.d.ts": 1,
8758+
"/src/app/module.tsbuildinfo": 1,
87688759
"/src/app/file3.ts": 1,
87698760
"/src/app/file4.ts": 1,
8770-
"/src/app/module.tsbuildinfo": 1,
87718761
"/src/app/tsconfig.json": 1
87728762
}
87738763

tests/baselines/reference/tsbuild/amdModulesWithOut/triple-slash-refs-in-all-projects.js

+2-13
Original file line numberDiff line numberDiff line change
@@ -94,15 +94,7 @@ Output::
9494
exitCode:: ExitStatus.Success
9595

9696
getModifiedTime:: {
97-
"/src/lib/file0.ts": 1,
98-
"/src/lib/file1.ts": 1,
99-
"/src/lib/file2.ts": 1,
100-
"/src/lib/global.ts": 1,
101-
"/src/lib/tripleRef.d.ts": 1,
10297
"/src/lib/module.tsbuildinfo": 1,
103-
"/src/app/file3.ts": 1,
104-
"/src/app/file4.ts": 1,
105-
"/src/app/tripleRef.d.ts": 1,
10698
"/src/app/module.tsbuildinfo": 1
10799
}
108100

@@ -1236,17 +1228,14 @@ Output::
12361228
exitCode:: ExitStatus.Success
12371229

12381230
getModifiedTime:: {
1231+
"/src/lib/module.tsbuildinfo": 1,
12391232
"/src/lib/file0.ts": 1,
12401233
"/src/lib/file1.ts": 1,
1241-
"/src/lib/file2.ts": 1,
1242-
"/src/lib/global.ts": 1,
1243-
"/src/lib/tripleRef.d.ts": 1,
1244-
"/src/lib/module.tsbuildinfo": 1,
12451234
"/src/lib/module.d.ts": 1,
1235+
"/src/app/module.tsbuildinfo": 1,
12461236
"/src/app/file3.ts": 1,
12471237
"/src/app/file4.ts": 1,
12481238
"/src/app/tripleRef.d.ts": 1,
1249-
"/src/app/module.tsbuildinfo": 1,
12501239
"/src/app/tsconfig.json": 1,
12511240
"/src/app/module.d.ts": 1
12521241
}

tests/baselines/reference/tsbuild/amdModulesWithOut/when-the-module-resolution-finds-original-source-file.js

-6
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,7 @@ Output::
8484
exitCode:: ExitStatus.Success
8585

8686
getModifiedTime:: {
87-
"/src/lib/file0.ts": 1,
88-
"/src/lib/file1.ts": 1,
89-
"/src/lib/file2.ts": 1,
90-
"/src/lib/global.ts": 1,
9187
"/src/module.tsbuildinfo": 1,
92-
"/src/app/file3.ts": 1,
93-
"/src/app/file4.ts": 1,
9488
"/src/app/module.tsbuildinfo": 1
9589
}
9690

0 commit comments

Comments
 (0)