Skip to content

Commit 5b223e2

Browse files
committed
[cxx-interop] Handle different interop compat versions
Apart from `swift-5.9`, the `-cxx-interoperability-flag` compiler flag might take other values, such as `swift-6`, `default`, or `upcoming-swift`. This teaches Swift Driver to properly handle any of those values.
1 parent bee6273 commit 5b223e2

File tree

4 files changed

+5
-5
lines changed

4 files changed

+5
-5
lines changed

Sources/SwiftDriver/Jobs/DarwinToolchain+LinkerSupport.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ extension DarwinToolchain {
243243
// On Darwin, we only support libc++.
244244
var cxxCompatEnabled = parsedOptions.hasArgument(.enableExperimentalCxxInterop)
245245
if let cxxInteropMode = parsedOptions.getLastArgument(.cxxInteroperabilityMode) {
246-
if cxxInteropMode.asSingle == "swift-5.9" {
246+
if cxxInteropMode.asSingle != "off" {
247247
cxxCompatEnabled = true
248248
}
249249
}

Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ extension GenericUnixToolchain {
7878
// just using `clang` and avoid a dependency on the C++ runtime.
7979
var cxxCompatEnabled = parsedOptions.hasArgument(.enableExperimentalCxxInterop)
8080
if let cxxInteropMode = parsedOptions.getLastArgument(.cxxInteroperabilityMode) {
81-
if cxxInteropMode.asSingle == "swift-5.9" {
81+
if cxxInteropMode.asSingle != "off" {
8282
cxxCompatEnabled = true
8383
}
8484
}

Sources/SwiftDriver/Jobs/WindowsToolchain+LinkerSupport.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ extension WindowsToolchain {
8787

8888
var cxxCompatEnabled = parsedOptions.hasArgument(.enableExperimentalCxxInterop)
8989
if let cxxInteropMode = parsedOptions.getLastArgument(.cxxInteroperabilityMode) {
90-
if cxxInteropMode.asSingle == "swift-5.9" {
90+
if cxxInteropMode.asSingle != "off" {
9191
cxxCompatEnabled = true
9292
}
9393
}

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7064,7 +7064,7 @@ final class SwiftDriverTests: XCTestCase {
70647064
env["SWIFT_DRIVER_CLANGXX_EXEC"] = swiftClangxx.pathString
70657065

70667066
var driver = try Driver(
7067-
args: ["swiftc", "-cxx-interoperability-mode=swift-5.9", "-emit-library",
7067+
args: ["swiftc", "-cxx-interoperability-mode=swift-6", "-emit-library",
70687068
"foo.swift", "bar.o", "-o", "foo.l"],
70697069
env: env)
70707070

@@ -7707,7 +7707,7 @@ final class SwiftDriverTests: XCTestCase {
77077707
#else
77087708
VirtualPath.resetTemporaryFileStore()
77097709
var driver = try Driver(args: [
7710-
"swiftc", "-cxx-interoperability-mode=swift-5.9", "-emit-library", "-o", "library.dll", "library.obj"
7710+
"swiftc", "-cxx-interoperability-mode=upcoming-swift", "-emit-library", "-o", "library.dll", "library.obj"
77117711
])
77127712
let jobs = try driver.planBuild().removingAutolinkExtractJobs()
77137713
XCTAssertEqual(jobs.count, 1)

0 commit comments

Comments
 (0)