Skip to content

Commit 175a886

Browse files
authored
Fix interpreter flags for manifests using pre-release tools-version (#6633)
`self.currentToolsVersion >= manifestToolsVersion` will always be true when using the 999.0 tools-version, so also accept a higher tools-version if we're in development mode.
1 parent 6478e27 commit 175a886

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

Sources/Workspace/Workspace.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1907,7 +1907,7 @@ extension Workspace {
19071907
let manifestPath = try ManifestLoader.findManifest(packagePath: packagePath, fileSystem: self.fileSystem, currentToolsVersion: self.currentToolsVersion)
19081908
let manifestToolsVersion = try ToolsVersionParser.parse(manifestPath: manifestPath, fileSystem: self.fileSystem)
19091909

1910-
guard self.currentToolsVersion >= manifestToolsVersion, manifestToolsVersion >= ToolsVersion.minimumRequired else {
1910+
guard self.currentToolsVersion >= manifestToolsVersion || SwiftVersion.current.isDevelopment, manifestToolsVersion >= ToolsVersion.minimumRequired else {
19111911
throw StringError("invalid tools version")
19121912
}
19131913
return manifestLoader.interpreterFlags(for: manifestToolsVersion)

Tests/WorkspaceTests/WorkspaceTests.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,20 @@ final class WorkspaceTests: XCTestCase {
203203

204204
XCTAssertEqual(ws.interpreterFlags(for: foo), [])
205205
}
206+
207+
do {
208+
let ws = try createWorkspace(
209+
"""
210+
// swift-tools-version:999.0
211+
import PackageDescription
212+
let package = Package(
213+
name: "foo"
214+
)
215+
"""
216+
)
217+
218+
XCTAssertMatch(ws.interpreterFlags(for: foo), [.equal("-swift-version"), .equal("5")])
219+
}
206220
}
207221
}
208222

0 commit comments

Comments
 (0)