Skip to content

Commit 1f749a0

Browse files
authored
[6.0][PackageDescription] Deprecated swiftLanguageVersion should result … (#7826)
…in `swiftLanguageMode` setting - Explanation: Otherwise manifest loading is going to fail because `swiftLanguageVersion` has been removed. - Main Branch PR: #7825 - Resolves: #7823 - Resolves: rdar://132484168 - Risk: Very Low (fixes a bug). - Reviewed By: @MaxDesiatov - Testing: New tests were added. (cherry picked from commit d1405f2)
1 parent eaa0fea commit 1f749a0

File tree

3 files changed

+36
-2
lines changed

3 files changed

+36
-2
lines changed

Sources/PackageDescription/BuildSettings.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ public struct SwiftSetting: Sendable {
402402
_ condition: BuildSettingCondition? = nil
403403
) -> SwiftSetting {
404404
return SwiftSetting(
405-
name: "swiftLanguageVersion", value: [.init(describing: version)], condition: condition)
405+
name: "swiftLanguageMode", value: [.init(describing: version)], condition: condition)
406406
}
407407

408408
/// Defines a `-language-mode` to pass to the

Tests/PackageLoadingTests/PD_6_0_LoadingTests.swift

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,40 @@ final class PackageDescription6_0LoadingTests: PackageDescriptionLoadingTests {
6666
}
6767
}
6868

69+
func testSwiftLanguageModesPerTarget() async throws {
70+
try UserToolchain.default.skipUnlessAtLeastSwift6()
71+
72+
let content = """
73+
import PackageDescription
74+
let package = Package(
75+
name: "Foo",
76+
defaultLocalization: "fr",
77+
products: [],
78+
targets: [
79+
.target(
80+
name: "Foo",
81+
swiftSettings: [
82+
.swiftLanguageMode(.v5)
83+
]
84+
),
85+
.target(
86+
name: "Bar",
87+
swiftSettings: [
88+
.swiftLanguageVersion(.v6)
89+
]
90+
)
91+
]
92+
)
93+
"""
94+
95+
let observability = ObservabilitySystem.makeForTesting()
96+
let (_, validationDiagnostics) = try await loadAndValidateManifest(content, observabilityScope: observability.topScope)
97+
XCTAssertNoDiagnostics(validationDiagnostics)
98+
testDiagnostics(observability.diagnostics) { result in
99+
result.checkUnordered(diagnostic: .contains("'swiftLanguageVersion' is deprecated: renamed to 'swiftLanguageMode(_:_:)'"), severity: .warning)
100+
}
101+
}
102+
69103
private func loadRootManifestWithBasicGitRepository(
70104
manifestContent: String,
71105
validator: (Manifest, TestingObservability) throws -> ()

Tests/WorkspaceTests/ManifestSourceGenerationTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,7 @@ final class ManifestSourceGenerationTests: XCTestCase {
589589
try await testManifestWritingRoundTrip(manifestContents: contents, toolsVersion: .v5_9)
590590
}
591591

592-
func testManifestGenerationWithSwiftLanguageVersion() async throws {
592+
func testManifestGenerationWithSwiftLanguageMode() async throws {
593593
try UserToolchain.default.skipUnlessAtLeastSwift6()
594594
let manifest = Manifest.createRootManifest(
595595
displayName: "pkg",

0 commit comments

Comments
 (0)