Skip to content

Commit 5337c4a

Browse files
author
David Ungar
committed
Check against build start time, not build record mod time
1 parent fbba44f commit 5337c4a

File tree

2 files changed

+8
-9
lines changed

2 files changed

+8
-9
lines changed

Sources/SwiftDriver/IncrementalCompilation/IncrementalDependencyAndInputSetup.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,11 +224,11 @@ extension IncrementalCompilationState.IncrementalDependencyAndInputSetup {
224224
graphIfPresent = nil
225225
}
226226
catch let ModuleDependencyGraph.ReadError.timeTravellingPriors(priorsModTime: priorsModTime,
227-
buildRecordModTime: buildRecordModTime,
227+
buildStartTime: buildStartTime,
228228
priorsTimeIntervalSinceStart: priorsTimeIntervalSinceStart) {
229229
diagnosticEngine.emit(
230230
warning: "Will not do cross-module incremental builds, priors saved at \(priorsModTime)), " +
231-
"but the previous build started at \(buildRecordModTime) [priorsTimeIntervalSinceStart: \(priorsTimeIntervalSinceStart)], at '\(dependencyGraphPath)'")
231+
"but the previous build started at \(buildStartTime) [priorsTimeIntervalSinceStart: \(priorsTimeIntervalSinceStart)], at '\(dependencyGraphPath)'")
232232
graphIfPresent = nil
233233
}
234234
catch {

Sources/SwiftDriver/IncrementalCompilation/ModuleDependencyGraph.swift

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -588,7 +588,7 @@ extension ModuleDependencyGraph {
588588
case unknownKind
589589
case unknownDependencySourceExtension
590590
case timeTravellingPriors(priorsModTime: Date,
591-
buildRecordModTime: Date,
591+
buildStartTime: Date,
592592
priorsTimeIntervalSinceStart: TimeInterval)
593593
}
594594

@@ -811,17 +811,16 @@ extension ModuleDependencyGraph {
811811
fileprivate static func ensurePriorsCreatedDuringPriorBuild(
812812
at path: VirtualPath,
813813
info: IncrementalCompilationState.IncrementalDependencyAndInputSetup) throws {
814-
guard let priorsModTime = try? info.fileSystem.lastModificationTime(for: path),
815-
let buildRecordModTime =
816-
try? info.fileSystem.lastModificationTime(for: info.buildRecordInfo.buildRecordPath)
814+
let buildStartTime = info.buildStartTime
815+
guard let priorsModTime = try? info.fileSystem.lastModificationTime(for: path)
817816
else {
818817
return
819818
}
820-
let priorsTimeIntervalSinceStart = priorsModTime.timeIntervalSince(buildRecordModTime)
819+
let priorsTimeIntervalSinceStart = priorsModTime.timeIntervalSince(buildStartTime)
821820
// CI seems to emit identical times; I'm not sure why. So compare to -1.
822-
guard -1.0 < priorsTimeIntervalSinceStart else {
821+
guard -1.0 <= priorsTimeIntervalSinceStart else {
823822
throw ReadError.timeTravellingPriors(priorsModTime: priorsModTime,
824-
buildRecordModTime: buildRecordModTime,
823+
buildStartTime: buildStartTime,
825824
priorsTimeIntervalSinceStart: priorsTimeIntervalSinceStart)
826825
}
827826
}

0 commit comments

Comments
 (0)