Skip to content

Commit 3c5c2d0

Browse files
author
David Ungar
authored
Merge pull request #402 from davidungar/mimic-legacy-up-to-date
[Incremental] Use same up-to-date test as legacy driver
2 parents 30f2a83 + 96d4c2e commit 3c5c2d0

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

Sources/SwiftDriver/Incremental Compilation/IncrementalCompilationState.swift

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -275,14 +275,20 @@ extension IncrementalCompilationState {
275275
}
276276
let modDate = buildRecordInfo.compilationInputModificationDates[input]
277277
?? Date.distantFuture
278-
let previousCompilationStatus = outOfDateBuildRecord
279-
.inputInfos[input.file]?.status ?? .newlyAdded
278+
let inputInfo = outOfDateBuildRecord.inputInfos[input.file]
279+
let previousCompilationStatus = inputInfo?.status ?? .newlyAdded
280+
let previousModTime = inputInfo?.previousModTime
281+
282+
// Because legacy driver reads/writes dates wrt 1970,
283+
// and because converting time intervals to/from Dates from 1970
284+
// exceeds Double precision, must not compare dates directly
285+
var datesMatch: Bool {
286+
modDate.timeIntervalSince1970 == previousModTime?.timeIntervalSince1970
287+
}
280288

281289
switch previousCompilationStatus {
282-
// Using outOfDateBuildRecord.inputInfos[input.file]?.previousModTime
283-
// has some inaccuracy.
284-
// Use outOfDateBuildRecord.buildTime instead
285-
case .upToDate where modDate < outOfDateBuildRecord.buildTime:
290+
291+
case .upToDate where datesMatch:
286292
reportIncrementalDecision?("May skip current input:", input)
287293
return nil
288294

0 commit comments

Comments
 (0)