Skip to content

Commit 00a6417

Browse files
authored
Merge pull request #25680 from a-tarasyuk/bug/25667-getmodifiedtime-has-wrong-return-type
25667 - getModifiedTime has wrong return type
2 parents 7c512fb + 8c7a1fa commit 00a6417

File tree

6 files changed

+20
-15
lines changed

6 files changed

+20
-15
lines changed

src/compiler/program.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ namespace ts {
135135

136136
sys.writeFile(fileName, data, writeByteOrderMark);
137137

138-
const mtimeAfter = sys.getModifiedTime!(fileName); // TODO: GH#18217
138+
const mtimeAfter = sys.getModifiedTime!(fileName) || missingFileModifiedTime; // TODO: GH#18217
139139

140140
outputFingerprints.set(fileName, {
141141
hash,

src/compiler/sys.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@ namespace ts {
482482
getCurrentDirectory(): string;
483483
getDirectories(path: string): string[];
484484
readDirectory(path: string, extensions?: ReadonlyArray<string>, exclude?: ReadonlyArray<string>, include?: ReadonlyArray<string>, depth?: number): string[];
485-
getModifiedTime?(path: string): Date;
485+
getModifiedTime?(path: string): Date | undefined;
486486
setModifiedTime?(path: string, time: Date): void;
487487
deleteFile?(path: string): void;
488488
/**

src/compiler/tsbuild.ts

+10-5
Original file line numberDiff line numberDiff line change
@@ -843,14 +843,18 @@ namespace ts {
843843
return buildHost.message(Diagnostics.A_non_dry_build_would_build_project_0, proj.options.configFilePath!);
844844
}
845845

846-
if (context.options.verbose) buildHost.verbose(Diagnostics.Updating_output_timestamps_of_project_0, proj.options.configFilePath!);
846+
if (context.options.verbose) {
847+
buildHost.verbose(Diagnostics.Updating_output_timestamps_of_project_0, proj.options.configFilePath!);
848+
}
849+
847850
const now = new Date();
848851
const outputs = getAllProjectOutputs(proj);
849852
let priorNewestUpdateTime = minimumDate;
850853
for (const file of outputs) {
851854
if (isDeclarationFile(file)) {
852-
priorNewestUpdateTime = newer(priorNewestUpdateTime, compilerHost.getModifiedTime!(file));
855+
priorNewestUpdateTime = newer(priorNewestUpdateTime, compilerHost.getModifiedTime!(file) || missingFileModifiedTime);
853856
}
857+
854858
compilerHost.setModifiedTime!(file, now);
855859
}
856860

@@ -1057,7 +1061,7 @@ namespace ts {
10571061
};
10581062
}
10591063

1060-
const inputTime = host.getModifiedTime(inputFile);
1064+
const inputTime = host.getModifiedTime(inputFile) || missingFileModifiedTime;
10611065
if (inputTime > newestInputFileTime) {
10621066
newestInputFileName = inputFile;
10631067
newestInputFileTime = inputTime;
@@ -1089,7 +1093,7 @@ namespace ts {
10891093
break;
10901094
}
10911095

1092-
const outputTime = host.getModifiedTime(output);
1096+
const outputTime = host.getModifiedTime(output) || missingFileModifiedTime;
10931097
if (outputTime < oldestOutputFileTime) {
10941098
oldestOutputFileTime = outputTime;
10951099
oldestOutputFileName = output;
@@ -1117,7 +1121,8 @@ namespace ts {
11171121
newestDeclarationFileContentChangedTime = newer(unchangedTime, newestDeclarationFileContentChangedTime);
11181122
}
11191123
else {
1120-
newestDeclarationFileContentChangedTime = newer(newestDeclarationFileContentChangedTime, host.getModifiedTime(output));
1124+
const outputModifiedTime = host.getModifiedTime(output) || missingFileModifiedTime;
1125+
newestDeclarationFileContentChangedTime = newer(newestDeclarationFileContentChangedTime, outputModifiedTime);
11211126
}
11221127
}
11231128
}

src/compiler/types.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -4684,7 +4684,7 @@ namespace ts {
46844684

46854685
export interface UpToDateHost {
46864686
fileExists(fileName: string): boolean;
4687-
getModifiedTime(fileName: string): Date;
4687+
getModifiedTime(fileName: string): Date | undefined;
46884688
getUnchangedTime?(fileName: string): Date | undefined;
46894689
getLastStatus?(fileName: string): UpToDateStatus | undefined;
46904690
setLastStatus?(fileName: string, status: UpToDateStatus): void;
@@ -4822,7 +4822,7 @@ namespace ts {
48224822
/* @internal */ hasChangedAutomaticTypeDirectiveNames?: boolean;
48234823
createHash?(data: string): string;
48244824

4825-
getModifiedTime?(fileName: string): Date;
4825+
getModifiedTime?(fileName: string): Date | undefined;
48264826
setModifiedTime?(fileName: string, date: Date): void;
48274827
deleteFile?(fileName: string): void;
48284828
}

tests/baselines/reference/api/tsserverlibrary.d.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -2584,7 +2584,7 @@ declare namespace ts {
25842584
}
25852585
interface UpToDateHost {
25862586
fileExists(fileName: string): boolean;
2587-
getModifiedTime(fileName: string): Date;
2587+
getModifiedTime(fileName: string): Date | undefined;
25882588
getUnchangedTime?(fileName: string): Date | undefined;
25892589
getLastStatus?(fileName: string): UpToDateStatus | undefined;
25902590
setLastStatus?(fileName: string, status: UpToDateStatus): void;
@@ -2688,7 +2688,7 @@ declare namespace ts {
26882688
resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string): ResolvedTypeReferenceDirective[];
26892689
getEnvironmentVariable?(name: string): string | undefined;
26902690
createHash?(data: string): string;
2691-
getModifiedTime?(fileName: string): Date;
2691+
getModifiedTime?(fileName: string): Date | undefined;
26922692
setModifiedTime?(fileName: string, date: Date): void;
26932693
deleteFile?(fileName: string): void;
26942694
}
@@ -3025,7 +3025,7 @@ declare namespace ts {
30253025
getCurrentDirectory(): string;
30263026
getDirectories(path: string): string[];
30273027
readDirectory(path: string, extensions?: ReadonlyArray<string>, exclude?: ReadonlyArray<string>, include?: ReadonlyArray<string>, depth?: number): string[];
3028-
getModifiedTime?(path: string): Date;
3028+
getModifiedTime?(path: string): Date | undefined;
30293029
setModifiedTime?(path: string, time: Date): void;
30303030
deleteFile?(path: string): void;
30313031
/**

tests/baselines/reference/api/typescript.d.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -2584,7 +2584,7 @@ declare namespace ts {
25842584
}
25852585
interface UpToDateHost {
25862586
fileExists(fileName: string): boolean;
2587-
getModifiedTime(fileName: string): Date;
2587+
getModifiedTime(fileName: string): Date | undefined;
25882588
getUnchangedTime?(fileName: string): Date | undefined;
25892589
getLastStatus?(fileName: string): UpToDateStatus | undefined;
25902590
setLastStatus?(fileName: string, status: UpToDateStatus): void;
@@ -2688,7 +2688,7 @@ declare namespace ts {
26882688
resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[], containingFile: string): ResolvedTypeReferenceDirective[];
26892689
getEnvironmentVariable?(name: string): string | undefined;
26902690
createHash?(data: string): string;
2691-
getModifiedTime?(fileName: string): Date;
2691+
getModifiedTime?(fileName: string): Date | undefined;
26922692
setModifiedTime?(fileName: string, date: Date): void;
26932693
deleteFile?(fileName: string): void;
26942694
}
@@ -3025,7 +3025,7 @@ declare namespace ts {
30253025
getCurrentDirectory(): string;
30263026
getDirectories(path: string): string[];
30273027
readDirectory(path: string, extensions?: ReadonlyArray<string>, exclude?: ReadonlyArray<string>, include?: ReadonlyArray<string>, depth?: number): string[];
3028-
getModifiedTime?(path: string): Date;
3028+
getModifiedTime?(path: string): Date | undefined;
30293029
setModifiedTime?(path: string, time: Date): void;
30303030
deleteFile?(path: string): void;
30313031
/**

0 commit comments

Comments
 (0)