Skip to content

Commit 1ce786d

Browse files
authored
Remove the version parameter for C++ interop mode build setting (#6583) (#6586)
1 parent 4b016bf commit 1ce786d

File tree

6 files changed

+13
-32
lines changed

6 files changed

+13
-32
lines changed

Sources/PackageDescription/BuildSettings.swift

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -377,22 +377,15 @@ public struct SwiftSetting {
377377
///
378378
/// - Parameters:
379379
/// - mode: The language mode, either C or CXX.
380-
/// - version: When using the CXX language mode, pass either the version
381-
/// of Swift and C++ interoperability or `nil`; otherwise, `nil`.
382380
/// - condition: A condition that restricts the application of the build
383381
/// setting.
384382
@available(_PackageDescription, introduced: 5.9)
385383
public static func interoperabilityMode(
386384
_ mode: InteroperabilityMode,
387-
version: String? = nil,
388385
_ condition: BuildSettingCondition? = nil
389386
) -> SwiftSetting {
390-
var values: [String] = [mode.rawValue]
391-
if let version = version {
392-
values.append(version)
393-
}
394387
return SwiftSetting(
395-
name: "interoperabilityMode", value: values, condition: condition)
388+
name: "interoperabilityMode", value: [mode.rawValue], condition: condition)
396389
}
397390
}
398391

Sources/PackageLoading/ManifestJSONParser.swift

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -683,16 +683,10 @@ extension TargetBuildSettingDescription.Kind {
683683
guard let lang = TargetBuildSettingDescription.InteroperabilityMode(rawValue: rawLang) else {
684684
throw InternalError("unknown interoperability mode: \(rawLang)")
685685
}
686-
if values.count > 2 {
686+
if values.count > 1 {
687687
throw InternalError("invalid build settings value")
688688
}
689-
let version: String?
690-
if values.count == 2 {
691-
version = values[1]
692-
} else {
693-
version = nil
694-
}
695-
return .interoperabilityMode(lang, version)
689+
return .interoperabilityMode(lang)
696690
case "enableUpcomingFeature":
697691
guard let value = values.first else {
698692
throw InternalError("invalid (empty) build settings value")

Sources/PackageLoading/PackageBuilder.swift

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1076,7 +1076,7 @@ public final class PackageBuilder {
10761076
decl = .LINK_FRAMEWORKS
10771077
}
10781078

1079-
case .interoperabilityMode(let lang, let version):
1079+
case .interoperabilityMode(let lang):
10801080
switch setting.tool {
10811081
case .c, .cxx, .linker:
10821082
throw InternalError("only Swift supports interoperability")
@@ -1086,10 +1086,7 @@ public final class PackageBuilder {
10861086
}
10871087

10881088
if lang == .Cxx {
1089-
// `version` is the compatibility version of Swift/C++ interop,
1090-
// which is meant to preserve source compatibility for
1091-
// user projects while Swift/C++ interop is evolving.
1092-
values = ["-cxx-interoperability-mode=\(version ?? "default")"]
1089+
values = ["-cxx-interoperability-mode=default"]
10931090
} else {
10941091
values = []
10951092
}

Sources/PackageModel/Manifest/TargetBuildSettingDescription.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public enum TargetBuildSettingDescription {
3333
case linkedLibrary(String)
3434
case linkedFramework(String)
3535

36-
case interoperabilityMode(InteroperabilityMode, String?)
36+
case interoperabilityMode(InteroperabilityMode)
3737

3838
case enableUpcomingFeature(String)
3939
case enableExperimentalFeature(String)

Sources/PackageModel/ManifestSourceGeneration.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -514,11 +514,8 @@ fileprivate extension SourceCodeFragment {
514514
params.append(SourceCodeFragment(from: condition))
515515
}
516516
self.init(enum: setting.kind.name, subnodes: params)
517-
case .interoperabilityMode(let lang, let version):
517+
case .interoperabilityMode(let lang):
518518
params.append(SourceCodeFragment(enum: lang.rawValue))
519-
if let version = version {
520-
params.append(SourceCodeFragment(key: "version", string: version))
521-
}
522519
self.init(enum: setting.kind.name, subnodes: params)
523520
case .unsafeFlags(let values):
524521
params.append(SourceCodeFragment(strings: values))

Tests/BuildTests/BuildPlanTests.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3289,8 +3289,8 @@ final class BuildPlanTests: XCTestCase {
32893289
.init(tool: .swift, kind: .define("RLINUX"), condition: .init(platformNames: ["linux"], config: "release")),
32903290
.init(tool: .swift, kind: .define("DMACOS"), condition: .init(platformNames: ["macos"], config: "debug")),
32913291
.init(tool: .swift, kind: .unsafeFlags(["-Isfoo", "-L", "sbar"])),
3292-
.init(tool: .swift, kind: .interoperabilityMode(.Cxx, "swift-5.9"), condition: .init(platformNames: ["linux"])),
3293-
.init(tool: .swift, kind: .interoperabilityMode(.Cxx, "swift-6.0"), condition: .init(platformNames: ["macos"])),
3292+
.init(tool: .swift, kind: .interoperabilityMode(.Cxx), condition: .init(platformNames: ["linux"])),
3293+
.init(tool: .swift, kind: .interoperabilityMode(.Cxx), condition: .init(platformNames: ["macos"])),
32943294
.init(tool: .swift, kind: .enableUpcomingFeature("BestFeature")),
32953295
.init(tool: .swift, kind: .enableUpcomingFeature("WorstFeature"), condition: .init(platformNames: ["macos"], config: "debug"))
32963296
]
@@ -3299,8 +3299,8 @@ final class BuildPlanTests: XCTestCase {
32993299
name: "exe", dependencies: ["bar"],
33003300
settings: [
33013301
.init(tool: .swift, kind: .define("FOO")),
3302-
.init(tool: .swift, kind: .interoperabilityMode(.C, nil), condition: .init(platformNames: ["linux"])),
3303-
.init(tool: .swift, kind: .interoperabilityMode(.Cxx, nil), condition: .init(platformNames: ["macos"])),
3302+
.init(tool: .swift, kind: .interoperabilityMode(.C), condition: .init(platformNames: ["linux"])),
3303+
.init(tool: .swift, kind: .interoperabilityMode(.Cxx), condition: .init(platformNames: ["macos"])),
33043304
.init(tool: .linker, kind: .linkedLibrary("sqlite3")),
33053305
.init(tool: .linker, kind: .linkedFramework("CoreData"), condition: .init(platformNames: ["macos"])),
33063306
.init(tool: .linker, kind: .unsafeFlags(["-Ilfoo", "-L", "lbar"])),
@@ -3359,7 +3359,7 @@ final class BuildPlanTests: XCTestCase {
33593359
XCTAssertMatch(cbar, [.anySequence, "-DCCC=2", "-I\(A.appending(components: "Sources", "cbar", "Sources", "headers"))", "-I\(A.appending(components: "Sources", "cbar", "Sources", "cppheaders"))", "-Icfoo", "-L", "cbar", "-Icxxfoo", "-L", "cxxbar", .end])
33603360

33613361
let bar = try result.target(for: "bar").swiftTarget().compileArguments()
3362-
XCTAssertMatch(bar, [.anySequence, "-DLINUX", "-Isfoo", "-L", "sbar", "-cxx-interoperability-mode=swift-5.9", "-enable-upcoming-feature", "BestFeature", .end])
3362+
XCTAssertMatch(bar, [.anySequence, "-DLINUX", "-Isfoo", "-L", "sbar", "-cxx-interoperability-mode=default", "-enable-upcoming-feature", "BestFeature", .end])
33633363

33643364
let exe = try result.target(for: "exe").swiftTarget().compileArguments()
33653365
XCTAssertMatch(exe, [.anySequence, "-DFOO", .end])
@@ -3375,7 +3375,7 @@ final class BuildPlanTests: XCTestCase {
33753375
XCTAssertMatch(cbar, [.anySequence, "-DCCC=2", "-I\(A.appending(components: "Sources", "cbar", "Sources", "headers"))", "-I\(A.appending(components: "Sources", "cbar", "Sources", "cppheaders"))", "-Icfoo", "-L", "cbar", "-Icxxfoo", "-L", "cxxbar", .end])
33763376

33773377
let bar = try result.target(for: "bar").swiftTarget().compileArguments()
3378-
XCTAssertMatch(bar, [.anySequence, "-DDMACOS", "-Isfoo", "-L", "sbar", "-cxx-interoperability-mode=swift-6.0", "-enable-upcoming-feature", "BestFeature", "-enable-upcoming-feature", "WorstFeature", .end])
3378+
XCTAssertMatch(bar, [.anySequence, "-DDMACOS", "-Isfoo", "-L", "sbar", "-cxx-interoperability-mode=default", "-enable-upcoming-feature", "BestFeature", "-enable-upcoming-feature", "WorstFeature", .end])
33793379

33803380
let exe = try result.target(for: "exe").swiftTarget().compileArguments()
33813381
XCTAssertMatch(exe, [.anySequence, "-DFOO", "-cxx-interoperability-mode=default", .end])

0 commit comments

Comments
 (0)