@@ -1103,6 +1103,51 @@ final class SwiftPMBuildSystemTests: XCTestCase {
11031103 XCTAssertEqual ( end. token, begin. token)
11041104 XCTAssertEqual ( end. value, . end( WorkDoneProgressEnd ( ) ) )
11051105 }
1106+
1107+ func testBuildSettingsForVersionSpecificPackageManifest( ) async throws {
1108+ try await withTestScratchDir { tempDir in
1109+ try FileManager . default. createFiles (
1110+ root: tempDir,
1111+ files: [
1112+ " pkg/Sources/lib/a.swift " : " " ,
1113+ " pkg/Package.swift " : """
1114+ // swift-tools-version:4.2
1115+ import PackageDescription
1116+ let package = Package(
1117+ name: " a " ,
1118+ targets: [.target(name: " lib " )]
1119+ )
1120+ """ ,
1121+ " pkg/Package@swift-5.8.swift " : """
1122+ // swift-tools-version:4.2
1123+ import PackageDescription
1124+ let package = Package(
1125+ name: " a " ,
1126+ targets: [.target(name: " lib " )]
1127+ )
1128+ """ ,
1129+ ]
1130+ )
1131+ let packageRoot = try tempDir. appendingPathComponent ( " pkg " ) . realpath
1132+ let versionSpecificManifestURL = packageRoot. appendingPathComponent ( " Package@swift-5.8.swift " )
1133+ let buildSystemManager = await BuildSystemManager (
1134+ buildSystemSpec: BuildSystemSpec ( kind: . swiftPM, projectRoot: packageRoot) ,
1135+ toolchainRegistry: . forTesting,
1136+ options: SourceKitLSPOptions ( ) ,
1137+ connectionToClient: DummyBuildSystemManagerConnectionToClient ( ) ,
1138+ buildSystemTestHooks: BuildSystemTestHooks ( )
1139+ )
1140+ await buildSystemManager. waitForUpToDateBuildGraph ( )
1141+ let settings = await buildSystemManager. buildSettingsInferredFromMainFile (
1142+ for: DocumentURI ( versionSpecificManifestURL) ,
1143+ language: . swift,
1144+ fallbackAfterTimeout: false
1145+ )
1146+ let compilerArgs = try XCTUnwrap ( settings? . compilerArguments)
1147+ XCTAssert ( compilerArgs. contains ( " -package-description-version " ) )
1148+ XCTAssert ( compilerArgs. contains ( try versionSpecificManifestURL. filePath) )
1149+ }
1150+ }
11061151}
11071152
11081153private func assertArgumentsDoNotContain(
0 commit comments