Skip to content

Commit 49daa7e

Browse files
Merge pull request #1526 from cachemeifyoucan/eng/PR-121206439
2 parents c81e03c + f2ad68b commit 49daa7e

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

Sources/SwiftDriver/Driver/Driver.swift

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -638,8 +638,18 @@ public struct Driver {
638638
diagnosticEngine: diagnosticsEngine,
639639
compilerMode: compilerMode)
640640

641-
let cachingEnableOverride = parsedOptions.hasArgument(.driverExplicitModuleBuild) && env.keys.contains("SWIFT_ENABLE_CACHING")
642-
self.enableCaching = parsedOptions.hasArgument(.cacheCompileJob) || cachingEnableOverride
641+
let cachingEnabled = parsedOptions.hasArgument(.cacheCompileJob) || env.keys.contains("SWIFT_ENABLE_CACHING")
642+
if cachingEnabled {
643+
if !parsedOptions.hasArgument(.driverExplicitModuleBuild) {
644+
diagnosticsEngine.emit(.warning("-cache-compile-job cannot be used without explicit module build, turn off caching"),
645+
location: nil)
646+
self.enableCaching = false
647+
} else {
648+
self.enableCaching = true
649+
}
650+
} else {
651+
self.enableCaching = false
652+
}
643653
self.useClangIncludeTree = !parsedOptions.hasArgument(.noClangIncludeTree) && !env.keys.contains("SWIFT_CACHING_USE_CLANG_CAS_FS")
644654
self.scannerPrefixMap = try Self.computeScanningPrefixMapper(&parsedOptions)
645655
if let sdkMapping = parsedOptions.getLastArgument(.scannerPrefixMapSdk)?.asSingle {

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7609,6 +7609,13 @@ final class SwiftDriverTests: XCTestCase {
76097609
}
76107610
}
76117611
}
7612+
7613+
func testCachingBuildOptions() throws {
7614+
try assertDriverDiagnostics(args: "swiftc", "foo.swift", "-emit-module", "-cache-compile-job") {
7615+
$1.expect(.warning("-cache-compile-job cannot be used without explicit module build, turn off caching"))
7616+
}
7617+
try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-emit-module", "-cache-compile-job", "-explicit-module-build")
7618+
}
76127619
}
76137620

76147621
func assertString(

0 commit comments

Comments
 (0)