Skip to content

Commit 31b95b6

Browse files
committed
Add abi descriptor to the output file list
1 parent 4f7ea25 commit 31b95b6

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

Sources/SwiftDriver/Jobs/EmitModuleJob.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,9 @@ extension Driver {
9292
commandLine.appendPath(outputPath)
9393
if isFeatureSupported(.emit_abi_descriptor) {
9494
commandLine.appendFlag(.emitAbiDescriptorPath)
95-
commandLine.appendPath(outputPath.replacingExtension(with: .jsonABIBaseline))
95+
let abiOutput = outputPath.replacingExtension(with: .jsonABIBaseline)
96+
commandLine.appendPath(abiOutput)
97+
outputs.append(TypedVirtualPath(file: abiOutput.intern(), type: .jsonABIBaseline))
9698
}
9799
return Job(
98100
moduleName: moduleOutputInfo.name,

Sources/SwiftDriver/Jobs/MergeModuleJob.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,9 @@ extension Driver {
7878

7979
if isFeatureSupported(.emit_abi_descriptor) {
8080
commandLine.appendFlag(.emitAbiDescriptorPath)
81-
commandLine.appendPath(outputPath.replacingExtension(with: .jsonABIBaseline))
81+
let abiOutput = outputPath.replacingExtension(with: .jsonABIBaseline)
82+
commandLine.appendPath(abiOutput)
83+
outputs.append(TypedVirtualPath(file: abiOutput.intern(), type: .jsonABIBaseline))
8284
}
8385
return Job(
8486
moduleName: moduleOutputInfo.name,

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2246,10 +2246,11 @@ final class SwiftDriverTests: XCTestCase {
22462246
XCTAssertEqual(Set(plannedJobs.map { $0.kind }), Set([.compile, .emitModule, .link]))
22472247
XCTAssertTrue(plannedJobs[0].tool.name.contains("swift"))
22482248
XCTAssertTrue(plannedJobs[0].commandLine.contains(.flag("-parse-as-library")))
2249-
XCTAssertEqual(plannedJobs[0].outputs.count, 3)
2249+
XCTAssertEqual(plannedJobs[0].outputs.count, 4)
22502250
XCTAssertEqual(plannedJobs[0].outputs[0].file, .absolute(AbsolutePath("/foo/bar/Test.swiftmodule")))
22512251
XCTAssertEqual(plannedJobs[0].outputs[1].file, .absolute(AbsolutePath("/foo/bar/Test.swiftdoc")))
22522252
XCTAssertEqual(plannedJobs[0].outputs[2].file, .absolute(AbsolutePath("/foo/bar/Test.swiftsourceinfo")))
2253+
XCTAssertEqual(plannedJobs[0].outputs[3].file, .absolute(AbsolutePath("/foo/bar/Test.abi.json")))
22532254

22542255
// We don't know the output file of the symbol graph, just make sure the flag is passed along.
22552256
XCTAssertTrue(plannedJobs[0].commandLine.contains(.flag("-emit-symbol-graph-dir")))
@@ -2263,10 +2264,11 @@ final class SwiftDriverTests: XCTestCase {
22632264
XCTAssertEqual(plannedJobs.count, 1)
22642265
XCTAssertEqual(Set(plannedJobs.map { $0.kind }), Set([.emitModule]))
22652266
XCTAssertTrue(plannedJobs[0].tool.name.contains("swift"))
2266-
XCTAssertEqual(plannedJobs[0].outputs.count, 3)
2267+
XCTAssertEqual(plannedJobs[0].outputs.count, 4)
22672268
XCTAssertEqual(plannedJobs[0].outputs[0].file, .absolute(AbsolutePath("/foo/bar/Test.swiftmodule")))
22682269
XCTAssertEqual(plannedJobs[0].outputs[1].file, .absolute(AbsolutePath("/foo/bar/Test.swiftdoc")))
22692270
XCTAssertEqual(plannedJobs[0].outputs[2].file, .absolute(AbsolutePath("/foo/bar/Test.swiftsourceinfo")))
2271+
XCTAssertEqual(plannedJobs[0].outputs[3].file, .absolute(AbsolutePath("/foo/bar/Test.abi.json")))
22702272
}
22712273

22722274
do {
@@ -3485,6 +3487,8 @@ final class SwiftDriverTests: XCTestCase {
34853487
"emitModule (swift-frontend)" -> "test.swiftmodule" [color=green];
34863488
"test.swiftdoc" [fontsize=12];
34873489
"emitModule (swift-frontend)" -> "test.swiftdoc" [color=green];
3490+
"test.abi.json" [fontsize=12];
3491+
"emitModule (swift-frontend)" -> "test.abi.json" [color=green];
34883492
"compile (swift-frontend)" [style=bold];
34893493
"test.swift" -> "compile (swift-frontend)" [color=blue];
34903494
"test-1.o" [fontsize=12];
@@ -4542,10 +4546,11 @@ final class SwiftDriverTests: XCTestCase {
45424546
let emitModuleJob = plannedJobs.first(where: {$0.kind == .emitModule})!
45434547
XCTAssertEqual(emitModuleJob.inputs.count, 1)
45444548
XCTAssertEqual(emitModuleJob.inputs[0].file, .relative(RelativePath("embed-bitcode.swift")))
4545-
XCTAssertEqual(emitModuleJob.outputs.count, 3)
4549+
XCTAssertEqual(emitModuleJob.outputs.count, 4)
45464550
XCTAssertEqual(emitModuleJob.outputs[0].file, .relative(RelativePath("main.swiftmodule")))
45474551
XCTAssertEqual(emitModuleJob.outputs[1].file, .relative(RelativePath("main.swiftdoc")))
45484552
XCTAssertEqual(emitModuleJob.outputs[2].file, .relative(RelativePath("main.swiftsourceinfo")))
4553+
XCTAssertEqual(emitModuleJob.outputs[3].file, .relative(RelativePath("main.abi.json")))
45494554
}
45504555

45514556
do {
@@ -4600,10 +4605,11 @@ final class SwiftDriverTests: XCTestCase {
46004605
XCTAssertEqual(emitModuleJob.inputs.count, 2)
46014606
XCTAssertEqual(emitModuleJob.inputs[0].file, .relative(RelativePath("embed-bitcode.swift")))
46024607
XCTAssertEqual(emitModuleJob.inputs[1].file, .relative(RelativePath("empty.swift")))
4603-
XCTAssertEqual(emitModuleJob.outputs.count, 3)
4608+
XCTAssertEqual(emitModuleJob.outputs.count, 4)
46044609
XCTAssertEqual(emitModuleJob.outputs[0].file, .relative(RelativePath("ABC.swiftmodule")))
46054610
XCTAssertEqual(emitModuleJob.outputs[1].file, .relative(RelativePath("ABC.swiftdoc")))
46064611
XCTAssertEqual(emitModuleJob.outputs[2].file, .relative(RelativePath("ABC.swiftsourceinfo")))
4612+
XCTAssertEqual(emitModuleJob.outputs[3].file, .relative(RelativePath("ABC.abi.json")))
46074613
}
46084614

46094615
do {

0 commit comments

Comments
 (0)