@@ -240,7 +240,7 @@ final class SwiftDriverTests: XCTestCase {
240
240
// Test the combination of -c and -o includes the base output path.
241
241
do {
242
242
var driver = try Driver ( args: [ " swiftc " , " -c " , " foo.swift " , " -o " , " /some/output/path/bar.o " ] )
243
- let plannedJobs = try driver. planBuild ( )
243
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
244
244
XCTAssertEqual ( plannedJobs. count, 1 )
245
245
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
246
246
XCTAssertTrue ( plannedJobs [ 0 ] . commandLine. contains ( . path( try VirtualPath ( path: " /some/output/path/bar.o " ) ) ) )
@@ -410,7 +410,7 @@ final class SwiftDriverTests: XCTestCase {
410
410
411
411
func testStandardCompileJobs( ) throws {
412
412
var driver1 = try Driver ( args: [ " swiftc " , " foo.swift " , " bar.swift " , " -module-name " , " Test " ] )
413
- let plannedJobs = try driver1. planBuild ( )
413
+ let plannedJobs = try driver1. planBuild ( ) . removingAutolinkExtractJobs ( )
414
414
XCTAssertEqual ( plannedJobs. count, 3 )
415
415
XCTAssertEqual ( plannedJobs [ 0 ] . outputs. count, 1 )
416
416
XCTAssertEqual ( plannedJobs [ 0 ] . outputs. first!. file, VirtualPath . temporary ( RelativePath ( " foo.o " ) ) )
@@ -1129,7 +1129,7 @@ final class SwiftDriverTests: XCTestCase {
1129
1129
func testBatchModeCompiles( ) throws {
1130
1130
do {
1131
1131
var driver1 = try Driver ( args: [ " swiftc " , " foo1.swift " , " bar1.swift " , " foo2.swift " , " bar2.swift " , " foo3.swift " , " bar3.swift " , " foo4.swift " , " bar4.swift " , " foo5.swift " , " bar5.swift " , " wibble.swift " , " -module-name " , " Test " , " -enable-batch-mode " , " -driver-batch-count " , " 3 " ] )
1132
- let plannedJobs = try driver1. planBuild ( )
1132
+ let plannedJobs = try driver1. planBuild ( ) . removingAutolinkExtractJobs ( )
1133
1133
XCTAssertEqual ( plannedJobs. count, 4 )
1134
1134
XCTAssertEqual ( plannedJobs [ 0 ] . outputs. count, 4 )
1135
1135
XCTAssertEqual ( plannedJobs [ 0 ] . outputs. first!. file, VirtualPath . temporary ( RelativePath ( " foo1.o " ) ) )
@@ -1145,7 +1145,7 @@ final class SwiftDriverTests: XCTestCase {
1145
1145
// Test 1 partition results in 1 job
1146
1146
do {
1147
1147
var driver = try Driver ( args: [ " swiftc " , " -toolchain-stdlib-rpath " , " -module-cache-path " , " /tmp/clang-module-cache " , " -swift-version " , " 4 " , " -Xfrontend " , " -ignore-module-source-info " , " -module-name " , " batch " , " -enable-batch-mode " , " -j " , " 1 " , " -c " , " main.swift " , " lib.swift " ] )
1148
- let plannedJobs = try driver. planBuild ( )
1148
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
1149
1149
XCTAssertEqual ( plannedJobs. count, 1 )
1150
1150
var count = 0
1151
1151
for arg in plannedJobs [ 0 ] . commandLine where arg == . flag( " -primary-file " ) {
@@ -1176,7 +1176,7 @@ final class SwiftDriverTests: XCTestCase {
1176
1176
" swiftc " , " -whole-module-optimization " , " foo.swift " , " bar.swift " , " wibble.swift " ,
1177
1177
" -module-name " , " Test " , " -num-threads " , " 4 "
1178
1178
] )
1179
- let plannedJobs = try driver1. planBuild ( )
1179
+ let plannedJobs = try driver1. planBuild ( ) . removingAutolinkExtractJobs ( )
1180
1180
XCTAssertEqual ( plannedJobs. count, 2 )
1181
1181
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
1182
1182
XCTAssertEqual ( plannedJobs [ 0 ] . outputs. count, 3 )
@@ -1191,7 +1191,7 @@ final class SwiftDriverTests: XCTestCase {
1191
1191
// emit-module
1192
1192
do {
1193
1193
var driver = try Driver ( args: [ " swiftc " , " -module-name=ThisModule " , " -wmo " , " -num-threads " , " 4 " , " main.swift " , " multi-threaded.swift " , " -emit-module " , " -o " , " test.swiftmodule " ] )
1194
- let plannedJobs = try driver. planBuild ( )
1194
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
1195
1195
XCTAssertEqual ( plannedJobs. count, 1 )
1196
1196
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
1197
1197
XCTAssertEqual ( plannedJobs [ 0 ] . inputs. count, 2 )
@@ -1218,7 +1218,7 @@ final class SwiftDriverTests: XCTestCase {
1218
1218
" swiftc " , " -whole-module-optimization " , " foo.swift " , " bar.swift " , " wibble.swift " , " -module-name " , " Test " ,
1219
1219
" -num-threads " , " 4 " , " -output-file-map " , file. path. pathString, " -emit-module-interface "
1220
1220
] )
1221
- let plannedJobs = try driver1. planBuild ( )
1221
+ let plannedJobs = try driver1. planBuild ( ) . removingAutolinkExtractJobs ( )
1222
1222
XCTAssertEqual ( plannedJobs. count, 2 )
1223
1223
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
1224
1224
XCTAssertEqual ( plannedJobs [ 0 ] . outputs. count, 4 )
@@ -1310,52 +1310,49 @@ final class SwiftDriverTests: XCTestCase {
1310
1310
}
1311
1311
1312
1312
func testModuleWrapJob( ) throws {
1313
+ // FIXME: These tests will fail when run on macOS, because
1314
+ // swift-autolink-extract is not present
1315
+ #if os(Linux)
1313
1316
do {
1314
1317
var driver = try Driver ( args: [ " swiftc " , " -target " , " x86_64-unknown-linux-gnu " , " -g " , " foo.swift " ] )
1315
1318
let plannedJobs = try driver. planBuild ( )
1316
- XCTAssertEqual ( plannedJobs. count, 4 )
1317
- // FIXME: There should also be an autolink-extract job. It looks like our
1318
- // triple parsing code is not detecting the object file format correctly.
1319
- XCTAssertEqual ( plannedJobs. map { $0. kind } , [ . compile, . mergeModule, . moduleWrap, . link] )
1320
- XCTAssertEqual ( plannedJobs [ 2 ] . inputs. count, 1 )
1321
- XCTAssertEqual ( plannedJobs [ 2 ] . inputs. count, 1 )
1322
- XCTAssertTrue ( plannedJobs [ 2 ] . commandLine. contains ( subsequence: [ " -target " , " x86_64-unknown-linux-gnu " ] ) )
1323
- XCTAssertTrue ( plannedJobs [ 1 ] . outputs. contains ( plannedJobs [ 2 ] . inputs. first!) )
1324
- XCTAssertTrue ( plannedJobs [ 3 ] . inputs. contains ( plannedJobs [ 2 ] . outputs. first!) )
1325
- }
1326
-
1327
- // dsymutil won't be found on other platforms
1328
- #if os(macOS)
1329
- do {
1330
- var driver = try Driver ( args: [ " swiftc " , " -target " , " x86_64-apple-macosx10.15 " , " -g " , " foo.swift " ] )
1331
- let plannedJobs = try driver. planBuild ( )
1332
- XCTAssertEqual ( plannedJobs. count, 4 )
1333
- // No module wrapping with Mach-O.
1334
- // FIXME: There should also be an autolink-extract job. It looks like our
1335
- // triple parsing code is not detecting the object file format correctly.
1336
- XCTAssertEqual ( plannedJobs. map { $0. kind } , [ . compile, . mergeModule, . link, . generateDSYM] )
1319
+ XCTAssertEqual ( plannedJobs. count, 5 )
1320
+ XCTAssertEqual ( plannedJobs. map { $0. kind } , [ . compile, . mergeModule, . autolinkExtract, . moduleWrap, . link] )
1321
+ XCTAssertEqual ( plannedJobs [ 3 ] . inputs. count, 1 )
1322
+ XCTAssertEqual ( plannedJobs [ 3 ] . inputs. count, 1 )
1323
+ XCTAssertTrue ( plannedJobs [ 3 ] . commandLine. contains ( subsequence: [ " -target " , " x86_64-unknown-linux-gnu " ] ) )
1324
+ XCTAssertTrue ( plannedJobs [ 1 ] . outputs. contains ( plannedJobs [ 3 ] . inputs. first!) )
1325
+ XCTAssertTrue ( plannedJobs [ 4 ] . inputs. contains ( plannedJobs [ 3 ] . outputs. first!) )
1337
1326
}
1338
- #endif
1339
1327
1340
1328
do {
1341
1329
var driver = try Driver ( args: [ " swiftc " , " -target " , " x86_64-unknown-linux-gnu " , " foo.swift " ] )
1342
1330
let plannedJobs = try driver. planBuild ( )
1343
- XCTAssertEqual ( plannedJobs. count, 2 )
1331
+ XCTAssertEqual ( plannedJobs. count, 3 )
1344
1332
// No merge module/module wrap jobs.
1345
- // FIXME: There should also be an autolink-extract job. It looks like our
1346
- // triple parsing code is not detecting the object file format correctly.
1347
- XCTAssertEqual ( plannedJobs. map { $0. kind } , [ . compile, . link] )
1333
+ XCTAssertEqual ( plannedJobs. map { $0. kind } , [ . compile, . autolinkExtract, . link] )
1348
1334
}
1349
1335
1350
1336
do {
1351
1337
var driver = try Driver ( args: [ " swiftc " , " -target " , " x86_64-unknown-linux-gnu " , " -gdwarf-types " , " foo.swift " ] )
1352
1338
let plannedJobs = try driver. planBuild ( )
1353
- XCTAssertEqual ( plannedJobs. count, 3 )
1339
+ XCTAssertEqual ( plannedJobs. count, 4 )
1354
1340
// Merge module, but no module wrapping.
1341
+ XCTAssertEqual ( plannedJobs. map { $0. kind } , [ . compile, . mergeModule, . autolinkExtract, . link] )
1342
+ }
1343
+ #endif
1344
+ // dsymutil won't be found on other platforms
1345
+ #if os(macOS)
1346
+ do {
1347
+ var driver = try Driver ( args: [ " swiftc " , " -target " , " x86_64-apple-macosx10.15 " , " -g " , " foo.swift " ] )
1348
+ let plannedJobs = try driver. planBuild ( )
1349
+ XCTAssertEqual ( plannedJobs. count, 4 )
1350
+ // No module wrapping with Mach-O.
1355
1351
// FIXME: There should also be an autolink-extract job. It looks like our
1356
1352
// triple parsing code is not detecting the object file format correctly.
1357
- XCTAssertEqual ( plannedJobs. map { $0. kind } , [ . compile, . mergeModule, . link] )
1353
+ XCTAssertEqual ( plannedJobs. map { $0. kind } , [ . compile, . mergeModule, . link, . generateDSYM ] )
1358
1354
}
1355
+ #endif
1359
1356
}
1360
1357
1361
1358
func testRepl( ) throws {
@@ -1751,7 +1748,7 @@ final class SwiftDriverTests: XCTestCase {
1751
1748
do {
1752
1749
// No dSYM generation (no -g)
1753
1750
var driver = try Driver ( args: commonArgs)
1754
- let plannedJobs = try driver. planBuild ( )
1751
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
1755
1752
1756
1753
XCTAssertEqual ( plannedJobs. count, 3 )
1757
1754
XCTAssertFalse ( plannedJobs. contains { $0. kind == . generateDSYM } )
@@ -1760,7 +1757,7 @@ final class SwiftDriverTests: XCTestCase {
1760
1757
do {
1761
1758
// No dSYM generation (-gnone)
1762
1759
var driver = try Driver ( args: commonArgs + [ " -gnone " ] )
1763
- let plannedJobs = try driver. planBuild ( )
1760
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
1764
1761
1765
1762
XCTAssertEqual ( plannedJobs. count, 3 )
1766
1763
XCTAssertFalse ( plannedJobs. contains { $0. kind == . generateDSYM } )
@@ -1778,7 +1775,7 @@ final class SwiftDriverTests: XCTestCase {
1778
1775
XCTAssertEqual ( plannedJobs. count, 5 )
1779
1776
XCTAssertEqual ( generateDSYMJob. outputs. last? . file, try VirtualPath ( path: " Test.dSYM " ) )
1780
1777
} else {
1781
- XCTAssertEqual ( plannedJobs. count, 5 )
1778
+ XCTAssertEqual ( plannedJobs. count, 6 )
1782
1779
XCTAssertFalse ( plannedJobs. map { $0. kind } . contains ( . generateDSYM) )
1783
1780
}
1784
1781
@@ -1795,23 +1792,23 @@ final class SwiftDriverTests: XCTestCase {
1795
1792
// No dSYM generation (no -g), therefore no verification
1796
1793
try assertDriverDiagnostics ( args: commonArgs) { driver, verifier in
1797
1794
verifier. expect ( . warning( " ignoring '-verify-debug-info'; no debug info is being generated " ) )
1798
- let plannedJobs = try driver. planBuild ( )
1795
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
1799
1796
XCTAssertEqual ( plannedJobs. count, 3 )
1800
1797
XCTAssertFalse ( plannedJobs. contains { $0. kind == . verifyDebugInfo } )
1801
1798
}
1802
1799
1803
1800
// No dSYM generation (-gnone), therefore no verification
1804
1801
try assertDriverDiagnostics ( args: commonArgs + [ " -gnone " ] ) { driver, verifier in
1805
1802
verifier. expect ( . warning( " ignoring '-verify-debug-info'; no debug info is being generated " ) )
1806
- let plannedJobs = try driver. planBuild ( )
1803
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
1807
1804
XCTAssertEqual ( plannedJobs. count, 3 )
1808
1805
XCTAssertFalse ( plannedJobs. contains { $0. kind == . verifyDebugInfo } )
1809
1806
}
1810
1807
1811
1808
do {
1812
1809
// dSYM generation and verification (-g + -verify-debug-info)
1813
1810
var driver = try Driver ( args: commonArgs + [ " -g " ] )
1814
- let plannedJobs = try driver. planBuild ( )
1811
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
1815
1812
1816
1813
let verifyDebugInfoJob = plannedJobs. last!
1817
1814
let cmd = verifyDebugInfoJob. commandLine
@@ -1841,6 +1838,36 @@ final class SwiftDriverTests: XCTestCase {
1841
1838
serializer. writeDOT ( to: & output)
1842
1839
1843
1840
let dynamicLinker = driver. targetTriple. isDarwin ? " ld " : " clang "
1841
+ #if os(Linux)
1842
+ XCTAssertEqual ( output,
1843
+ """
1844
+ digraph Jobs {
1845
+ " compile (swift-frontend) " [style=bold];
1846
+ " test.swift " [fontsize=12];
1847
+ " test.swift " -> " compile (swift-frontend) " [color=blue];
1848
+ " test.o " [fontsize=12];
1849
+ " compile (swift-frontend) " -> " test.o " [color=green];
1850
+ " test.swiftmodule " [fontsize=12];
1851
+ " compile (swift-frontend) " -> " test.swiftmodule " [color=green];
1852
+ " test.swiftdoc " [fontsize=12];
1853
+ " compile (swift-frontend) " -> " test.swiftdoc " [color=green];
1854
+ " mergeModule (swift-frontend) " [style=bold];
1855
+ " test.swiftmodule " -> " mergeModule (swift-frontend) " [color=blue];
1856
+ " mergeModule (swift-frontend) " -> " test.swiftmodule " [color=green];
1857
+ " mergeModule (swift-frontend) " -> " test.swiftdoc " [color=green];
1858
+ " autolinkExtract (swift-autolink-extract) " [style=bold];
1859
+ " test.o " -> " autolinkExtract (swift-autolink-extract) " [color=blue];
1860
+ " test.autolink " [fontsize=12];
1861
+ " autolinkExtract (swift-autolink-extract) " -> " test.autolink " [color=green];
1862
+ " link (clang) " [style=bold];
1863
+ " test.o " -> " link (clang) " [color=blue];
1864
+ " test.autolink " -> " link (clang) " [color=blue];
1865
+ " test " [fontsize=12];
1866
+ " link (clang) " -> " test " [color=green];
1867
+ }
1868
+
1869
+ """ )
1870
+ #else
1844
1871
XCTAssertEqual ( output,
1845
1872
"""
1846
1873
digraph Jobs {
@@ -1864,6 +1891,7 @@ final class SwiftDriverTests: XCTestCase {
1864
1891
}
1865
1892
1866
1893
""" )
1894
+ #endif
1867
1895
}
1868
1896
1869
1897
func testRegressions( ) throws {
@@ -2142,7 +2170,7 @@ final class SwiftDriverTests: XCTestCase {
2142
2170
2143
2171
do {
2144
2172
var driver = try Driver ( args: [ " swiftc " , " -c " , " -embed-bitcode " , " -import-objc-header " , " TestInputHeader.h " , " -pch-output-dir " , " /pch " , " foo.swift " ] )
2145
- let plannedJobs = try driver. planBuild ( )
2173
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2146
2174
XCTAssertEqual ( plannedJobs. count, 3 )
2147
2175
2148
2176
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . generatePCH)
@@ -2323,7 +2351,7 @@ final class SwiftDriverTests: XCTestCase {
2323
2351
func testEmbedBitcode( ) throws {
2324
2352
do {
2325
2353
var driver = try Driver ( args: [ " swiftc " , " -embed-bitcode " , " embed-bitcode.swift " ] )
2326
- let plannedJobs = try driver. planBuild ( )
2354
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2327
2355
XCTAssertEqual ( plannedJobs. count, 3 )
2328
2356
2329
2357
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
@@ -2345,7 +2373,7 @@ final class SwiftDriverTests: XCTestCase {
2345
2373
2346
2374
do {
2347
2375
var driver = try Driver ( args: [ " swiftc " , " -embed-bitcode " , " main.swift " , " hi.swift " ] )
2348
- let plannedJobs = try driver. planBuild ( )
2376
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2349
2377
XCTAssertEqual ( plannedJobs. count, 5 )
2350
2378
2351
2379
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
@@ -2379,7 +2407,7 @@ final class SwiftDriverTests: XCTestCase {
2379
2407
2380
2408
do {
2381
2409
var driver = try Driver ( args: [ " swiftc " , " -embed-bitcode " , " -c " , " -emit-module " , " embed-bitcode.swift " ] )
2382
- let plannedJobs = try driver. planBuild ( )
2410
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2383
2411
XCTAssertEqual ( plannedJobs. count, 3 )
2384
2412
2385
2413
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
@@ -2408,7 +2436,7 @@ final class SwiftDriverTests: XCTestCase {
2408
2436
2409
2437
do {
2410
2438
var driver = try Driver ( args: [ " swiftc " , " -embed-bitcode " , " -wmo " , " embed-bitcode.swift " ] )
2411
- let plannedJobs = try driver. planBuild ( )
2439
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2412
2440
XCTAssertEqual ( plannedJobs. count, 3 )
2413
2441
2414
2442
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
@@ -2430,7 +2458,7 @@ final class SwiftDriverTests: XCTestCase {
2430
2458
2431
2459
do {
2432
2460
var driver = try Driver ( args: [ " swiftc " , " -embed-bitcode " , " -c " , " -parse-as-library " , " -emit-module " , " embed-bitcode.swift " , " empty.swift " , " -module-name " , " ABC " ] )
2433
- let plannedJobs = try driver. planBuild ( )
2461
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2434
2462
XCTAssertEqual ( plannedJobs. count, 5 )
2435
2463
2436
2464
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
@@ -2465,7 +2493,7 @@ final class SwiftDriverTests: XCTestCase {
2465
2493
2466
2494
do {
2467
2495
var driver = try Driver ( args: [ " swiftc " , " -embed-bitcode " , " -c " , " -parse-as-library " , " -emit-module " , " -whole-module-optimization " , " embed-bitcode.swift " , " -parse-stdlib " , " -module-name " , " Swift " ] )
2468
- let plannedJobs = try driver. planBuild ( )
2496
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2469
2497
XCTAssertEqual ( plannedJobs. count, 2 )
2470
2498
2471
2499
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
@@ -2647,7 +2675,7 @@ final class SwiftDriverTests: XCTestCase {
2647
2675
func testVFSOverlay( ) throws {
2648
2676
do {
2649
2677
var driver = try Driver ( args: [ " swiftc " , " -c " , " -vfsoverlay " , " overlay.yaml " , " foo.swift " ] )
2650
- let plannedJobs = try driver. planBuild ( )
2678
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2651
2679
XCTAssertEqual ( plannedJobs. count, 1 )
2652
2680
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
2653
2681
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( subsequence: [ . flag( " -vfsoverlay " ) , . path( . relative( RelativePath ( " overlay.yaml " ) ) ) ] ) )
@@ -2656,7 +2684,7 @@ final class SwiftDriverTests: XCTestCase {
2656
2684
// Verify that the overlays are passed to the frontend in the same order.
2657
2685
do {
2658
2686
var driver = try Driver ( args: [ " swiftc " , " -c " , " -vfsoverlay " , " overlay1.yaml " , " -vfsoverlay " , " overlay2.yaml " , " -vfsoverlay " , " overlay3.yaml " , " foo.swift " ] )
2659
- let plannedJobs = try driver. planBuild ( )
2687
+ let plannedJobs = try driver. planBuild ( ) . removingAutolinkExtractJobs ( )
2660
2688
XCTAssertEqual ( plannedJobs. count, 1 )
2661
2689
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
2662
2690
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( subsequence: [ . flag( " -vfsoverlay " ) , . path( . relative( RelativePath ( " overlay1.yaml " ) ) ) , . flag( " -vfsoverlay " ) , . path( . relative( RelativePath ( " overlay2.yaml " ) ) ) , . flag( " -vfsoverlay " ) , . path( . relative( RelativePath ( " overlay3.yaml " ) ) ) ] ) )
@@ -2761,3 +2789,13 @@ fileprivate extension Array where Element: Equatable {
2761
2789
return false
2762
2790
}
2763
2791
}
2792
+
2793
+ fileprivate extension Array where Element == Job {
2794
+ // Utility to drop autolink-extract jobs, which helps avoid introducing
2795
+ // platform-specific conditionals in tests unrelated to autolinking.
2796
+ func removingAutolinkExtractJobs( ) -> Self {
2797
+ var filtered = self
2798
+ filtered. removeAll ( where: { $0. kind == . autolinkExtract } )
2799
+ return filtered
2800
+ }
2801
+ }
0 commit comments