From 1ac38c0c885108c9e960d9d9c6fdb74f59c2d702 Mon Sep 17 00:00:00 2001 From: Artem Chikin Date: Mon, 1 May 2023 14:37:46 -0700 Subject: [PATCH] Do not attempt to create compilation jobs when no Swift source files are specified as inputs Resolves rdar://108057797 --- Sources/SwiftDriver/Jobs/Planning.swift | 6 +++--- Tests/SwiftDriverTests/SwiftDriverTests.swift | 9 +++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Sources/SwiftDriver/Jobs/Planning.swift b/Sources/SwiftDriver/Jobs/Planning.swift index c3c27c535..51a5e312e 100644 --- a/Sources/SwiftDriver/Jobs/Planning.swift +++ b/Sources/SwiftDriver/Jobs/Planning.swift @@ -328,11 +328,11 @@ extension Driver { addJobOutputs: ([TypedVirtualPath]) -> Void, emitModuleTrace: Bool ) throws -> Job? { - guard case .singleCompile = compilerMode + guard case .singleCompile = compilerMode, + inputFiles.allSatisfy({ $0.type.isPartOfSwiftCompilation }) else { return nil } - if parsedOptions.hasArgument(.embedBitcode), - inputFiles.allSatisfy({ $0.type.isPartOfSwiftCompilation }) { + if parsedOptions.hasArgument(.embedBitcode) { let compile = try compileJob(primaryInputs: [], outputType: .llvmBitcode, addJobOutputs: addJobOutputs, diff --git a/Tests/SwiftDriverTests/SwiftDriverTests.swift b/Tests/SwiftDriverTests/SwiftDriverTests.swift index a3bc9efe2..30807a43a 100644 --- a/Tests/SwiftDriverTests/SwiftDriverTests.swift +++ b/Tests/SwiftDriverTests/SwiftDriverTests.swift @@ -2875,6 +2875,15 @@ final class SwiftDriverTests: XCTestCase { } } + func testWMOWithJustObjectInputs() throws { + var driver = try Driver(args: [ + "swiftc", "-wmo", "foo.o", "bar.o" + ]) + let plannedJobs = try driver.planBuild() + XCTAssertEqual(plannedJobs.count, 1) + XCTAssertEqual(plannedJobs.first?.kind, .link) + } + func testModuleAliasingWithImplicitBuild() throws { var driver = try Driver(args: [ "swiftc", "foo.swift", "-module-name", "Foo", "-module-alias", "Car=Bar",