Skip to content

Commit d2502a8

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

File tree

3 files changed

+32
-13
lines changed

3 files changed

+32
-13
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: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2182,10 +2182,11 @@ final class SwiftDriverTests: XCTestCase {
21822182
XCTAssert(plannedJobs[1].commandLine.contains(.flag("-import-objc-header")))
21832183

21842184
XCTAssertTrue(plannedJobs[2].tool.name.contains("swift"))
2185-
XCTAssertEqual(plannedJobs[2].outputs.count, 3)
2185+
XCTAssertEqual(plannedJobs[2].outputs.count, 4)
21862186
XCTAssertEqual(plannedJobs[2].outputs[0].file, .relative(RelativePath("Test.swiftmodule")))
21872187
XCTAssertEqual(plannedJobs[2].outputs[1].file, .relative(RelativePath("Test.swiftdoc")))
21882188
XCTAssertEqual(plannedJobs[2].outputs[2].file, .absolute(AbsolutePath("/foo/bar/Test.swiftsourceinfo")))
2189+
XCTAssertEqual(plannedJobs[2].outputs[3].file, .absolute(AbsolutePath("/foo/bar/Test.abi.json")))
21892190
XCTAssert(plannedJobs[2].commandLine.contains(.flag("-import-objc-header")))
21902191
}
21912192

@@ -2194,10 +2195,11 @@ final class SwiftDriverTests: XCTestCase {
21942195
let plannedJobs = try driver.planBuild()
21952196
XCTAssertEqual(plannedJobs.count, 3)
21962197
XCTAssertTrue(plannedJobs[2].tool.name.contains("swift"))
2197-
XCTAssertEqual(plannedJobs[2].outputs.count, 3)
2198+
XCTAssertEqual(plannedJobs[2].outputs.count, 4)
21982199
XCTAssertEqual(plannedJobs[2].outputs[0].file, .absolute(AbsolutePath("/foo/bar/Test.swiftmodule")))
21992200
XCTAssertEqual(plannedJobs[2].outputs[1].file, .absolute(AbsolutePath("/foo/bar/Test.swiftdoc")))
22002201
XCTAssertEqual(plannedJobs[2].outputs[2].file, .absolute(AbsolutePath("/foo/bar/Test.swiftsourceinfo")))
2202+
XCTAssertEqual(plannedJobs[2].outputs[3].file, .absolute(AbsolutePath("/foo/bar/Test.abi.json")))
22012203
}
22022204

22032205
do {
@@ -2206,10 +2208,11 @@ final class SwiftDriverTests: XCTestCase {
22062208
let plannedJobs = try driver.planBuild()
22072209
XCTAssertEqual(plannedJobs.count, 3)
22082210
XCTAssertTrue(plannedJobs[2].tool.name.contains("swift"))
2209-
XCTAssertEqual(plannedJobs[2].outputs.count, 3)
2211+
XCTAssertEqual(plannedJobs[2].outputs.count, 4)
22102212
XCTAssertEqual(plannedJobs[2].outputs[0].file, .relative(RelativePath("Test.swiftmodule")))
22112213
XCTAssertEqual(plannedJobs[2].outputs[1].file, .relative(RelativePath("Test.swiftdoc")))
22122214
XCTAssertEqual(plannedJobs[2].outputs[2].file, .relative(RelativePath("Test.swiftsourceinfo")))
2215+
XCTAssertEqual(plannedJobs[2].outputs[3].file, .relative(RelativePath("Test.abi.json")))
22132216
}
22142217

22152218
do {
@@ -2218,10 +2221,11 @@ final class SwiftDriverTests: XCTestCase {
22182221
let plannedJobs = try driver.planBuild()
22192222
XCTAssertEqual(plannedJobs.count, 3)
22202223
XCTAssertTrue(plannedJobs[2].tool.name.contains("swift"))
2221-
XCTAssertEqual(plannedJobs[2].outputs.count, 3)
2224+
XCTAssertEqual(plannedJobs[2].outputs.count, 4)
22222225
XCTAssertEqual(plannedJobs[2].outputs[0].file, .relative(RelativePath("Test.swiftmodule")))
22232226
XCTAssertEqual(plannedJobs[2].outputs[1].file, .relative(RelativePath("Test.swiftdoc")))
22242227
XCTAssertEqual(plannedJobs[2].outputs[2].file, .relative(RelativePath("Test.swiftsourceinfo")))
2228+
XCTAssertEqual(plannedJobs[2].outputs[3].file, .relative(RelativePath("Test.abi.json")))
22252229
}
22262230

22272231
do {
@@ -2246,10 +2250,11 @@ final class SwiftDriverTests: XCTestCase {
22462250
XCTAssertEqual(Set(plannedJobs.map { $0.kind }), Set([.compile, .emitModule, .link]))
22472251
XCTAssertTrue(plannedJobs[0].tool.name.contains("swift"))
22482252
XCTAssertTrue(plannedJobs[0].commandLine.contains(.flag("-parse-as-library")))
2249-
XCTAssertEqual(plannedJobs[0].outputs.count, 3)
2253+
XCTAssertEqual(plannedJobs[0].outputs.count, 4)
22502254
XCTAssertEqual(plannedJobs[0].outputs[0].file, .absolute(AbsolutePath("/foo/bar/Test.swiftmodule")))
22512255
XCTAssertEqual(plannedJobs[0].outputs[1].file, .absolute(AbsolutePath("/foo/bar/Test.swiftdoc")))
22522256
XCTAssertEqual(plannedJobs[0].outputs[2].file, .absolute(AbsolutePath("/foo/bar/Test.swiftsourceinfo")))
2257+
XCTAssertEqual(plannedJobs[0].outputs[3].file, .absolute(AbsolutePath("/foo/bar/Test.abi.json")))
22532258

22542259
// We don't know the output file of the symbol graph, just make sure the flag is passed along.
22552260
XCTAssertTrue(plannedJobs[0].commandLine.contains(.flag("-emit-symbol-graph-dir")))
@@ -2263,10 +2268,11 @@ final class SwiftDriverTests: XCTestCase {
22632268
XCTAssertEqual(plannedJobs.count, 1)
22642269
XCTAssertEqual(Set(plannedJobs.map { $0.kind }), Set([.emitModule]))
22652270
XCTAssertTrue(plannedJobs[0].tool.name.contains("swift"))
2266-
XCTAssertEqual(plannedJobs[0].outputs.count, 3)
2271+
XCTAssertEqual(plannedJobs[0].outputs.count, 4)
22672272
XCTAssertEqual(plannedJobs[0].outputs[0].file, .absolute(AbsolutePath("/foo/bar/Test.swiftmodule")))
22682273
XCTAssertEqual(plannedJobs[0].outputs[1].file, .absolute(AbsolutePath("/foo/bar/Test.swiftdoc")))
22692274
XCTAssertEqual(plannedJobs[0].outputs[2].file, .absolute(AbsolutePath("/foo/bar/Test.swiftsourceinfo")))
2275+
XCTAssertEqual(plannedJobs[0].outputs[3].file, .absolute(AbsolutePath("/foo/bar/Test.abi.json")))
22702276
}
22712277

22722278
do {
@@ -3485,6 +3491,8 @@ final class SwiftDriverTests: XCTestCase {
34853491
"emitModule (swift-frontend)" -> "test.swiftmodule" [color=green];
34863492
"test.swiftdoc" [fontsize=12];
34873493
"emitModule (swift-frontend)" -> "test.swiftdoc" [color=green];
3494+
"test.abi.json" [fontsize=12];
3495+
"emitModule (swift-frontend)" -> "test.abi.json" [color=green];
34883496
"compile (swift-frontend)" [style=bold];
34893497
"test.swift" -> "compile (swift-frontend)" [color=blue];
34903498
"test-1.o" [fontsize=12];
@@ -3512,6 +3520,8 @@ final class SwiftDriverTests: XCTestCase {
35123520
"emitModule (swift-frontend)" -> "test.swiftmodule" [color=green];
35133521
"test.swiftdoc" [fontsize=12];
35143522
"emitModule (swift-frontend)" -> "test.swiftdoc" [color=green];
3523+
"test.abi.json" [fontsize=12];
3524+
"emitModule (swift-frontend)" -> "test.abi.json" [color=green];
35153525
"compile (swift-frontend)" [style=bold];
35163526
"test.swift" -> "compile (swift-frontend)" [color=blue];
35173527
"test-1.o" [fontsize=12];
@@ -4542,10 +4552,11 @@ final class SwiftDriverTests: XCTestCase {
45424552
let emitModuleJob = plannedJobs.first(where: {$0.kind == .emitModule})!
45434553
XCTAssertEqual(emitModuleJob.inputs.count, 1)
45444554
XCTAssertEqual(emitModuleJob.inputs[0].file, .relative(RelativePath("embed-bitcode.swift")))
4545-
XCTAssertEqual(emitModuleJob.outputs.count, 3)
4555+
XCTAssertEqual(emitModuleJob.outputs.count, 4)
45464556
XCTAssertEqual(emitModuleJob.outputs[0].file, .relative(RelativePath("main.swiftmodule")))
45474557
XCTAssertEqual(emitModuleJob.outputs[1].file, .relative(RelativePath("main.swiftdoc")))
45484558
XCTAssertEqual(emitModuleJob.outputs[2].file, .relative(RelativePath("main.swiftsourceinfo")))
4559+
XCTAssertEqual(emitModuleJob.outputs[3].file, .relative(RelativePath("main.abi.json")))
45494560
}
45504561

45514562
do {
@@ -4600,10 +4611,11 @@ final class SwiftDriverTests: XCTestCase {
46004611
XCTAssertEqual(emitModuleJob.inputs.count, 2)
46014612
XCTAssertEqual(emitModuleJob.inputs[0].file, .relative(RelativePath("embed-bitcode.swift")))
46024613
XCTAssertEqual(emitModuleJob.inputs[1].file, .relative(RelativePath("empty.swift")))
4603-
XCTAssertEqual(emitModuleJob.outputs.count, 3)
4614+
XCTAssertEqual(emitModuleJob.outputs.count, 4)
46044615
XCTAssertEqual(emitModuleJob.outputs[0].file, .relative(RelativePath("ABC.swiftmodule")))
46054616
XCTAssertEqual(emitModuleJob.outputs[1].file, .relative(RelativePath("ABC.swiftdoc")))
46064617
XCTAssertEqual(emitModuleJob.outputs[2].file, .relative(RelativePath("ABC.swiftsourceinfo")))
4618+
XCTAssertEqual(emitModuleJob.outputs[3].file, .relative(RelativePath("ABC.abi.json")))
46074619
}
46084620

46094621
do {
@@ -4854,10 +4866,11 @@ final class SwiftDriverTests: XCTestCase {
48544866
let plannedJobs = try driver.planBuild()
48554867
let emitModuleJob = plannedJobs[0]
48564868
XCTAssertTrue(emitModuleJob.commandLine.contains(.flag("-emit-module-source-info-path")))
4857-
XCTAssertEqual(emitModuleJob.outputs.count, 3)
4869+
XCTAssertEqual(emitModuleJob.outputs.count, 4)
48584870
XCTAssertTrue(emitModuleJob.outputs[0].file == VirtualPath.relative(RelativePath("foo.swiftmodule")))
48594871
XCTAssertTrue(emitModuleJob.outputs[1].file == VirtualPath.relative(RelativePath("foo.swiftdoc")))
48604872
XCTAssertTrue(emitModuleJob.outputs[2].file == VirtualPath.relative(RelativePath("foo.swiftsourceinfo")))
4873+
XCTAssertTrue(emitModuleJob.outputs[3].file == VirtualPath.relative(RelativePath("foo.abi.json")))
48614874
}
48624875
// implicit with Project/ Directory
48634876
do {
@@ -4870,10 +4883,11 @@ final class SwiftDriverTests: XCTestCase {
48704883
let plannedJobs = try driver.planBuild()
48714884
let emitModuleJob = plannedJobs[0]
48724885
XCTAssertTrue(emitModuleJob.commandLine.contains(.flag("-emit-module-source-info-path")))
4873-
XCTAssertEqual(emitModuleJob.outputs.count, 3)
4886+
XCTAssertEqual(emitModuleJob.outputs.count, 4)
48744887
XCTAssertEqual(emitModuleJob.outputs[0].file, .absolute(path.appending(component: "foo.swiftmodule")))
48754888
XCTAssertEqual(emitModuleJob.outputs[1].file, .absolute(path.appending(component: "foo.swiftdoc")))
48764889
XCTAssertEqual(emitModuleJob.outputs[2].file, .absolute(projectDirPath.appending(component: "foo.swiftsourceinfo")))
4890+
XCTAssertEqual(emitModuleJob.outputs[3].file, .absolute(projectDirPath.appending(component: "foo.abi.json")))
48774891
}
48784892
}
48794893
// avoid implicit swiftsourceinfo
@@ -4882,9 +4896,10 @@ final class SwiftDriverTests: XCTestCase {
48824896
let plannedJobs = try driver.planBuild()
48834897
let emitModuleJob = plannedJobs[0]
48844898
XCTAssertFalse(emitModuleJob.commandLine.contains(.flag("-emit-module-source-info-path")))
4885-
XCTAssertEqual(emitModuleJob.outputs.count, 2)
4899+
XCTAssertEqual(emitModuleJob.outputs.count, 3)
48864900
XCTAssertTrue(emitModuleJob.outputs[0].file == VirtualPath.relative(RelativePath("foo.swiftmodule")))
48874901
XCTAssertTrue(emitModuleJob.outputs[1].file == VirtualPath.relative(RelativePath("foo.swiftdoc")))
4902+
XCTAssertTrue(emitModuleJob.outputs[2].file == VirtualPath.relative(RelativePath("foo.abi.json")))
48884903
}
48894904
}
48904905

0 commit comments

Comments
 (0)