From b47befaa53a1e427a0b2a6279a531c5a7bfa0e98 Mon Sep 17 00:00:00 2001 From: Boris Buegling Date: Fri, 2 Jun 2023 16:52:23 -0700 Subject: [PATCH] Fix interpreter flags for manifests using pre-release tools-version `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. --- Sources/Workspace/Workspace.swift | 2 +- Tests/WorkspaceTests/WorkspaceTests.swift | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Sources/Workspace/Workspace.swift b/Sources/Workspace/Workspace.swift index b266b944c52..a297a4aa19c 100644 --- a/Sources/Workspace/Workspace.swift +++ b/Sources/Workspace/Workspace.swift @@ -1951,7 +1951,7 @@ extension Workspace { let manifestPath = try ManifestLoader.findManifest(packagePath: packagePath, fileSystem: self.fileSystem, currentToolsVersion: self.currentToolsVersion) let manifestToolsVersion = try ToolsVersionParser.parse(manifestPath: manifestPath, fileSystem: self.fileSystem) - guard self.currentToolsVersion >= manifestToolsVersion, manifestToolsVersion >= ToolsVersion.minimumRequired else { + guard self.currentToolsVersion >= manifestToolsVersion || SwiftVersion.current.isDevelopment, manifestToolsVersion >= ToolsVersion.minimumRequired else { throw StringError("invalid tools version") } return manifestLoader.interpreterFlags(for: manifestToolsVersion) diff --git a/Tests/WorkspaceTests/WorkspaceTests.swift b/Tests/WorkspaceTests/WorkspaceTests.swift index a1808dae649..3102f64aa6f 100644 --- a/Tests/WorkspaceTests/WorkspaceTests.swift +++ b/Tests/WorkspaceTests/WorkspaceTests.swift @@ -203,6 +203,20 @@ final class WorkspaceTests: XCTestCase { XCTAssertEqual(ws.interpreterFlags(for: foo), []) } + + do { + let ws = try createWorkspace( + """ + // swift-tools-version:999.0 + import PackageDescription + let package = Package( + name: "foo" + ) + """ + ) + + XCTAssertMatch(ws.interpreterFlags(for: foo), [.equal("-swift-version"), .equal("5")]) + } } }