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")]) + } } }