Skip to content

Commit 1cc3fa5

Browse files
authored
Merge pull request #896 from xymus/we-want-partial-compile-jobs
Don't skip the separate compile jobs with emit-module-separately (until other tools are updated)
2 parents 62ab145 + 20974b4 commit 1cc3fa5

File tree

2 files changed

+24
-23
lines changed

2 files changed

+24
-23
lines changed

Sources/SwiftDriver/Jobs/Planning.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,11 @@ extension Driver {
404404
}
405405
assert(backendJobs.count <= 1)
406406
addCompileJobGroup(CompileJobGroup(compileJob: compile, backendJob: backendJobs.first))
407-
} else if !canSkipIfOnlyModule {
407+
} else {
408+
// TODO: if !canSkipIfOnlyModule {
409+
// Some other tools still expect the partial jobs. Bring this check
410+
// back once they are updated. rdar://84979778
411+
408412
// We can skip the compile jobs if all we want is a module when it's
409413
// built separately.
410414
let compile = try compileJob(primaryInputs: [primaryInput],

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -820,7 +820,7 @@ final class SwiftDriverTests: XCTestCase {
820820
func testEmitModuleEmittingDependencies() throws {
821821
var driver1 = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Foo", "-emit-dependencies", "-emit-module", "-serialize-diagnostics", "-driver-filelist-threshold=9999", "-experimental-emit-module-separately"])
822822
let plannedJobs = try driver1.planBuild().removingAutolinkExtractJobs()
823-
XCTAssertEqual(plannedJobs.count, 1)
823+
XCTAssertEqual(plannedJobs.count, 3)
824824
XCTAssertTrue(plannedJobs[0].kind == .emitModule)
825825
XCTAssertTrue(plannedJobs[0].commandLine.contains(.flag("-emit-dependencies-path")))
826826
XCTAssertTrue(plannedJobs[0].commandLine.contains(.flag("-serialize-diagnostics-path")))
@@ -843,7 +843,7 @@ final class SwiftDriverTests: XCTestCase {
843843
"-output-file-map", outputFileMap.description])
844844
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
845845

846-
XCTAssertEqual(plannedJobs.count, 1)
846+
XCTAssertEqual(plannedJobs.count, 3)
847847
XCTAssertTrue(plannedJobs[0].kind == .emitModule)
848848
XCTAssertTrue(plannedJobs[0].commandLine.contains(subsequence: [.flag("-serialize-diagnostics-path"), .path(.absolute(.init("/build/Foo-test.dia")))]))
849849
}
@@ -2166,7 +2166,7 @@ final class SwiftDriverTests: XCTestCase {
21662166
do {
21672167
var driver = try Driver(args: ["swiftc", "-module-name=ThisModule", "main.swift", "multi-threaded.swift", "-emit-module", "-o", "test.swiftmodule", "-experimental-emit-module-separately"])
21682168
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
2169-
XCTAssertEqual(plannedJobs.count, 1)
2169+
XCTAssertEqual(plannedJobs.count, 3)
21702170
XCTAssertEqual(plannedJobs[0].kind, .emitModule)
21712171
XCTAssertTrue(plannedJobs[0].commandLine.contains(.flag("-emit-abi-descriptor-path")))
21722172
}
@@ -2410,8 +2410,8 @@ final class SwiftDriverTests: XCTestCase {
24102410
// -experimental-emit-module-separately.
24112411
var driver = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test", "-emit-module-path", "/foo/bar/Test.swiftmodule", "-experimental-emit-module-separately"])
24122412
let plannedJobs = try driver.planBuild()
2413-
XCTAssertEqual(plannedJobs.count, 1)
2414-
XCTAssertEqual(Set(plannedJobs.map { $0.kind }), Set([.emitModule]))
2413+
XCTAssertEqual(plannedJobs.count, 3)
2414+
XCTAssertEqual(Set(plannedJobs.map { $0.kind }), Set([.emitModule, .compile]))
24152415
XCTAssertTrue(plannedJobs[0].tool.name.contains("swift"))
24162416
XCTAssertEqual(plannedJobs[0].outputs.count, 4)
24172417
XCTAssertEqual(plannedJobs[0].outputs[0].file, .absolute(AbsolutePath("/foo/bar/Test.swiftmodule")))
@@ -3620,7 +3620,7 @@ final class SwiftDriverTests: XCTestCase {
36203620
"swiftc", "-working-directory", "/Foo/Bar", "-emit-module", "/tmp/main.swift"
36213621
])
36223622
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
3623-
XCTAssertEqual(plannedJobs.count, 1)
3623+
XCTAssertEqual(plannedJobs.count, 2)
36243624
XCTAssertTrue(plannedJobs[0].commandLine.contains(.flag("-o")))
36253625
XCTAssertTrue(plannedJobs[0].commandLine.contains(.path(try VirtualPath(path: "/Foo/Bar/main.swiftmodule"))))
36263626
XCTAssertTrue(plannedJobs[0].commandLine.contains(.flag("-emit-module-doc-path")))
@@ -3740,7 +3740,7 @@ final class SwiftDriverTests: XCTestCase {
37403740
"swiftc", "-emit-module", "/tmp/main.swift", "-emit-module-path", "test-ios-macabi.swiftmodule"
37413741
])
37423742
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
3743-
XCTAssertEqual(plannedJobs.count, 1)
3743+
XCTAssertEqual(plannedJobs.count, 2)
37443744
XCTAssertTrue(plannedJobs[0].kind == .emitModule)
37453745
XCTAssertTrue(plannedJobs[0].commandLine.contains(.flag("-o")))
37463746
XCTAssertTrue(plannedJobs[0].commandLine.contains(.path(try VirtualPath(path: "test-ios-macabi.swiftmodule"))))
@@ -4184,7 +4184,7 @@ final class SwiftDriverTests: XCTestCase {
41844184
throw XCTSkip("Skipping: compiler does not support '-user-module-version'")
41854185
}
41864186
let plannedJobs = try driver.planBuild()
4187-
XCTAssertEqual(plannedJobs.count, 1)
4187+
XCTAssertEqual(plannedJobs.count, 2)
41884188
let emitModuleJob = plannedJobs[0]
41894189
XCTAssertEqual(emitModuleJob.kind, .emitModule)
41904190
XCTAssertTrue(emitModuleJob.commandLine.contains(.flag("-user-module-version")))
@@ -4202,14 +4202,13 @@ final class SwiftDriverTests: XCTestCase {
42024202
"-verify-emitted-module-interface",
42034203
"-enable-library-evolution"])
42044204
let plannedJobs = try driver.planBuild()
4205-
XCTAssertEqual(plannedJobs.count, 2)
4206-
let emitJob = plannedJobs[0]
4207-
let verifyJob = plannedJobs[1]
4208-
XCTAssertEqual(emitJob.kind, .emitModule)
4205+
XCTAssertEqual(plannedJobs.count, 3)
4206+
let emitJob = plannedJobs.first(where: { $0.kind == .emitModule })!
4207+
let verifyJob = plannedJobs.first(where: { $0.kind == .verifyModuleInterface })!
4208+
42094209
let mergeInterfaceOutputs = emitJob.outputs.filter { $0.type == .swiftInterface }
42104210
XCTAssertTrue(mergeInterfaceOutputs.count == 1,
42114211
"Merge module job should only have one swiftinterface output")
4212-
XCTAssertEqual(verifyJob.kind, .verifyModuleInterface)
42134212
XCTAssertTrue(verifyJob.inputs.count == 1)
42144213
XCTAssertTrue(verifyJob.inputs[0] == mergeInterfaceOutputs[0])
42154214
XCTAssertTrue(verifyJob.outputs.isEmpty)
@@ -4221,7 +4220,7 @@ final class SwiftDriverTests: XCTestCase {
42214220
var driver = try Driver(args: ["swiftc", "foo.swift", "-emit-module", "-module-name",
42224221
"foo", "-emit-module-interface", "-verify-emitted-module-interface"], env: envVars)
42234222
let plannedJobs = try driver.planBuild()
4224-
XCTAssertEqual(plannedJobs.count, 1)
4223+
XCTAssertEqual(plannedJobs.count, 2)
42254224
}
42264225

42274226
// Explicitly disabled
@@ -4231,7 +4230,7 @@ final class SwiftDriverTests: XCTestCase {
42314230
"-enable-library-evolution",
42324231
"-no-verify-emitted-module-interface"], env: envVars)
42334232
let plannedJobs = try driver.planBuild()
4234-
XCTAssertEqual(plannedJobs.count, 1)
4233+
XCTAssertEqual(plannedJobs.count, 2)
42354234
}
42364235

42374236
// Disabled by default in merge-module
@@ -4251,7 +4250,7 @@ final class SwiftDriverTests: XCTestCase {
42514250
"-enable-library-evolution",
42524251
"-experimental-emit-module-separately"])
42534252
let plannedJobs = try driver.planBuild()
4254-
XCTAssertEqual(plannedJobs.count, 1)
4253+
XCTAssertEqual(plannedJobs.count, 2)
42554254
}
42564255

42574256
// Emit-module separately
@@ -4261,14 +4260,12 @@ final class SwiftDriverTests: XCTestCase {
42614260
"-enable-library-evolution",
42624261
"-experimental-emit-module-separately"], env: envVars)
42634262
let plannedJobs = try driver.planBuild()
4264-
XCTAssertEqual(plannedJobs.count, 2)
4265-
let emitJob = plannedJobs[0]
4266-
let verifyJob = plannedJobs[1]
4267-
XCTAssertEqual(emitJob.kind, .emitModule)
4263+
XCTAssertEqual(plannedJobs.count, 3)
4264+
let emitJob = plannedJobs.first(where: { $0.kind == .emitModule })!
4265+
let verifyJob = plannedJobs.first(where: { $0.kind == .verifyModuleInterface })!
42684266
let emitInterfaceOutput = emitJob.outputs.filter { $0.type == .swiftInterface }
42694267
XCTAssertTrue(emitInterfaceOutput.count == 1,
42704268
"Emit module job should only have one swiftinterface output")
4271-
XCTAssertEqual(verifyJob.kind, .verifyModuleInterface)
42724269
XCTAssertTrue(verifyJob.inputs.count == 1)
42734270
XCTAssertTrue(verifyJob.inputs[0] == emitInterfaceOutput[0])
42744271
XCTAssertTrue(verifyJob.commandLine.contains(.path(emitInterfaceOutput[0].file)))
@@ -4326,7 +4323,7 @@ final class SwiftDriverTests: XCTestCase {
43264323
"-enable-library-evolution",
43274324
"-check-api-availability-only"])
43284325
let plannedJobs = try driver.planBuild()
4329-
XCTAssertEqual(plannedJobs.count, 2)
4326+
XCTAssertEqual(plannedJobs.count, 3)
43304327

43314328
let emitJob = plannedJobs.first(where: { $0.kind == .emitModule })!
43324329
XCTAssertTrue(emitJob.commandLine.contains(.flag("-check-api-availability-only")))

0 commit comments

Comments
 (0)