diff --git a/Sources/PackageDescription/BuildSettings.swift b/Sources/PackageDescription/BuildSettings.swift index c72087b4099..cff3aab80ae 100644 --- a/Sources/PackageDescription/BuildSettings.swift +++ b/Sources/PackageDescription/BuildSettings.swift @@ -402,7 +402,7 @@ public struct SwiftSetting: Sendable { _ condition: BuildSettingCondition? = nil ) -> SwiftSetting { return SwiftSetting( - name: "swiftLanguageVersion", value: [.init(describing: version)], condition: condition) + name: "swiftLanguageMode", value: [.init(describing: version)], condition: condition) } /// Defines a `-language-mode` to pass to the diff --git a/Tests/PackageLoadingTests/PD_6_0_LoadingTests.swift b/Tests/PackageLoadingTests/PD_6_0_LoadingTests.swift index f8ff6632e52..b549c90a445 100644 --- a/Tests/PackageLoadingTests/PD_6_0_LoadingTests.swift +++ b/Tests/PackageLoadingTests/PD_6_0_LoadingTests.swift @@ -66,6 +66,40 @@ final class PackageDescription6_0LoadingTests: PackageDescriptionLoadingTests { } } + func testSwiftLanguageModesPerTarget() async throws { + try UserToolchain.default.skipUnlessAtLeastSwift6() + + let content = """ + import PackageDescription + let package = Package( + name: "Foo", + defaultLocalization: "fr", + products: [], + targets: [ + .target( + name: "Foo", + swiftSettings: [ + .swiftLanguageMode(.v5) + ] + ), + .target( + name: "Bar", + swiftSettings: [ + .swiftLanguageVersion(.v6) + ] + ) + ] + ) + """ + + let observability = ObservabilitySystem.makeForTesting() + let (_, validationDiagnostics) = try await loadAndValidateManifest(content, observabilityScope: observability.topScope) + XCTAssertNoDiagnostics(validationDiagnostics) + testDiagnostics(observability.diagnostics) { result in + result.checkUnordered(diagnostic: .contains("'swiftLanguageVersion' is deprecated: renamed to 'swiftLanguageMode(_:_:)'"), severity: .warning) + } + } + private func loadRootManifestWithBasicGitRepository( manifestContent: String, validator: (Manifest, TestingObservability) throws -> () diff --git a/Tests/WorkspaceTests/ManifestSourceGenerationTests.swift b/Tests/WorkspaceTests/ManifestSourceGenerationTests.swift index 3bbbde1e75f..21ee879da9a 100644 --- a/Tests/WorkspaceTests/ManifestSourceGenerationTests.swift +++ b/Tests/WorkspaceTests/ManifestSourceGenerationTests.swift @@ -589,7 +589,7 @@ final class ManifestSourceGenerationTests: XCTestCase { try await testManifestWritingRoundTrip(manifestContents: contents, toolsVersion: .v5_9) } - func testManifestGenerationWithSwiftLanguageVersion() async throws { + func testManifestGenerationWithSwiftLanguageMode() async throws { try UserToolchain.default.skipUnlessAtLeastSwift6() let manifest = Manifest.createRootManifest( displayName: "pkg",