@@ -4497,6 +4497,20 @@ final class SwiftDriverTests: XCTestCase {
4497
4497
XCTAssert ( plannedJobs [ 1 ] . inputs [ 1 ] . file. extension == " pch " )
4498
4498
}
4499
4499
4500
+ func testInternalPCHasCompileInput( ) throws {
4501
+ var envVars = ProcessEnv . block
4502
+ envVars [ " SWIFT_DRIVER_LD_EXEC " ] = ld. nativePathString ( escaped: false )
4503
+
4504
+ var driver = try Driver ( args: [ " swiftc " , " -target " , " x86_64-apple-macosx10.14 " , " -enable-bridging-pch " , " -internal-import-bridging-header " , " TestInputHeader.h " , " foo.swift " ] ,
4505
+ env: envVars)
4506
+ let plannedJobs = try driver. planBuild ( )
4507
+ XCTAssertEqual ( plannedJobs. count, 3 )
4508
+ XCTAssert ( plannedJobs [ 0 ] . kind == . generatePCH)
4509
+ XCTAssert ( plannedJobs [ 1 ] . kind == . compile)
4510
+ XCTAssert ( plannedJobs [ 1 ] . inputs [ 0 ] . file. extension == " swift " )
4511
+ XCTAssert ( plannedJobs [ 1 ] . inputs [ 1 ] . file. extension == " pch " )
4512
+ }
4513
+
4500
4514
func testEnvironmentInferenceWarning( ) throws {
4501
4515
let sdkRoot = try testInputsPath. appending ( component: " SDKChecks " ) . appending ( component: " iPhoneOS.sdk " )
4502
4516
@@ -6600,8 +6614,21 @@ final class SwiftDriverTests: XCTestCase {
6600
6614
}
6601
6615
6602
6616
func testPCHGeneration( ) throws {
6617
+ try checkPCHGeneration ( internalBridgingHeader: false )
6618
+
6619
+ let driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -import-objc-header " , " TestInputHeader.h " , " foo.swift " ] )
6620
+ if driver. isFrontendArgSupported ( . internalImportBridgingHeader) {
6621
+ try checkPCHGeneration ( internalBridgingHeader: true )
6622
+ }
6623
+ }
6624
+
6625
+ func checkPCHGeneration( internalBridgingHeader: Bool ) throws {
6626
+ let importHeaderFlag = internalBridgingHeader
6627
+ ? " -internal-import-bridging-header "
6628
+ : " -import-objc-header "
6629
+
6603
6630
do {
6604
- var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -import-objc-header " , " TestInputHeader.h " , " foo.swift " ] )
6631
+ var driver = try Driver ( args: [ " swiftc " , " -typecheck " , importHeaderFlag , " TestInputHeader.h " , " foo.swift " ] )
6605
6632
let plannedJobs = try driver. planBuild ( )
6606
6633
XCTAssertEqual ( plannedJobs. count, 2 )
6607
6634
@@ -6620,23 +6647,23 @@ final class SwiftDriverTests: XCTestCase {
6620
6647
XCTAssertEqual ( plannedJobs [ 1 ] . kind, . compile)
6621
6648
XCTAssertEqual ( plannedJobs [ 1 ] . inputs. count, 2 )
6622
6649
XCTAssertEqual ( plannedJobs [ 1 ] . inputs [ 0 ] . file, try toPath ( " foo.swift " ) )
6623
- XCTAssert ( plannedJobs [ 1 ] . commandLine. contains ( . flag( " -import-objc-header " ) ) )
6650
+ XCTAssert ( plannedJobs [ 1 ] . commandLine. contains ( . flag( importHeaderFlag ) ) )
6624
6651
XCTAssertTrue ( commandContainsTemporaryPath ( plannedJobs [ 1 ] . commandLine, " TestInputHeader.pch " ) )
6625
6652
}
6626
6653
6627
6654
do {
6628
- var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -disable-bridging-pch " , " -import-objc-header " , " TestInputHeader.h " , " foo.swift " ] )
6655
+ var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -disable-bridging-pch " , importHeaderFlag , " TestInputHeader.h " , " foo.swift " ] )
6629
6656
let plannedJobs = try driver. planBuild ( )
6630
6657
XCTAssertEqual ( plannedJobs. count, 1 )
6631
6658
6632
6659
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
6633
6660
XCTAssertEqual ( plannedJobs [ 0 ] . inputs. count, 1 )
6634
6661
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . file, try toPath ( " foo.swift " ) )
6635
- XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -import-objc-header " ) ) )
6662
+ XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( importHeaderFlag ) ) )
6636
6663
}
6637
6664
6638
6665
do {
6639
- var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -index-store-path " , " idx " , " -import-objc-header " , " TestInputHeader.h " , " foo.swift " ] )
6666
+ var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -index-store-path " , " idx " , importHeaderFlag , " TestInputHeader.h " , " foo.swift " ] )
6640
6667
let plannedJobs = try driver. planBuild ( )
6641
6668
XCTAssertEqual ( plannedJobs. count, 2 )
6642
6669
@@ -6660,7 +6687,7 @@ final class SwiftDriverTests: XCTestCase {
6660
6687
}
6661
6688
6662
6689
do {
6663
- var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -import-objc-header " , " TestInputHeader.h " , " -pch-output-dir " , " /pch " , " foo.swift " ] )
6690
+ var driver = try Driver ( args: [ " swiftc " , " -typecheck " , importHeaderFlag , " TestInputHeader.h " , " -pch-output-dir " , " /pch " , " foo.swift " ] )
6664
6691
let plannedJobs = try driver. planBuild ( )
6665
6692
XCTAssertEqual ( plannedJobs. count, 2 )
6666
6693
@@ -6683,31 +6710,31 @@ final class SwiftDriverTests: XCTestCase {
6683
6710
}
6684
6711
6685
6712
do {
6686
- var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -disable-bridging-pch " , " -import-objc-header " , " TestInputHeader.h " , " -pch-output-dir " , " /pch " , " foo.swift " ] )
6713
+ var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -disable-bridging-pch " , importHeaderFlag , " TestInputHeader.h " , " -pch-output-dir " , " /pch " , " foo.swift " ] )
6687
6714
let plannedJobs = try driver. planBuild ( )
6688
6715
XCTAssertEqual ( plannedJobs. count, 1 )
6689
6716
6690
6717
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
6691
6718
XCTAssertEqual ( plannedJobs [ 0 ] . inputs. count, 1 )
6692
6719
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . file, try toPath ( " foo.swift " ) )
6693
- XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -import-objc-header " ) ) )
6720
+ XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( importHeaderFlag ) ) )
6694
6721
XCTAssertFalse ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -pch-output-dir " ) ) )
6695
6722
}
6696
6723
6697
6724
do {
6698
- var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -disable-bridging-pch " , " -import-objc-header " , " TestInputHeader.h " , " -pch-output-dir " , " /pch " , " -whole-module-optimization " , " foo.swift " ] )
6725
+ var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -disable-bridging-pch " , importHeaderFlag , " TestInputHeader.h " , " -pch-output-dir " , " /pch " , " -whole-module-optimization " , " foo.swift " ] )
6699
6726
let plannedJobs = try driver. planBuild ( )
6700
6727
XCTAssertEqual ( plannedJobs. count, 1 )
6701
6728
6702
6729
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
6703
6730
XCTAssertEqual ( plannedJobs [ 0 ] . inputs. count, 1 )
6704
6731
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . file, try toPath ( " foo.swift " ) )
6705
- XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -import-objc-header " ) ) )
6732
+ XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( importHeaderFlag ) ) )
6706
6733
XCTAssertFalse ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -pch-output-dir " ) ) )
6707
6734
}
6708
6735
6709
6736
do {
6710
- var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -import-objc-header " , " TestInputHeader.h " , " -pch-output-dir " , " /pch " , " -serialize-diagnostics " , " foo.swift " ] )
6737
+ var driver = try Driver ( args: [ " swiftc " , " -typecheck " , importHeaderFlag , " TestInputHeader.h " , " -pch-output-dir " , " /pch " , " -serialize-diagnostics " , " foo.swift " ] )
6711
6738
let plannedJobs = try driver. planBuild ( )
6712
6739
XCTAssertEqual ( plannedJobs. count, 2 )
6713
6740
@@ -6734,7 +6761,7 @@ final class SwiftDriverTests: XCTestCase {
6734
6761
}
6735
6762
6736
6763
do {
6737
- var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -import-objc-header " , " TestInputHeader.h " , " -pch-output-dir " , " /pch " , " -serialize-diagnostics " , " foo.swift " , " -emit-module " , " -emit-module-path " , " /module-path-dir " ] )
6764
+ var driver = try Driver ( args: [ " swiftc " , " -typecheck " , importHeaderFlag , " TestInputHeader.h " , " -pch-output-dir " , " /pch " , " -serialize-diagnostics " , " foo.swift " , " -emit-module " , " -emit-module-path " , " /module-path-dir " ] )
6738
6765
let plannedJobs = try driver. planBuild ( )
6739
6766
XCTAssertEqual ( plannedJobs. count, 3 )
6740
6767
@@ -6766,7 +6793,7 @@ final class SwiftDriverTests: XCTestCase {
6766
6793
}
6767
6794
6768
6795
do {
6769
- var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -import-objc-header " , " TestInputHeader.h " , " -pch-output-dir " , " /pch " , " -whole-module-optimization " , " foo.swift " ] )
6796
+ var driver = try Driver ( args: [ " swiftc " , " -typecheck " , importHeaderFlag , " TestInputHeader.h " , " -pch-output-dir " , " /pch " , " -whole-module-optimization " , " foo.swift " ] )
6770
6797
let plannedJobs = try driver. planBuild ( )
6771
6798
XCTAssertEqual ( plannedJobs. count, 2 )
6772
6799
@@ -6789,7 +6816,7 @@ final class SwiftDriverTests: XCTestCase {
6789
6816
}
6790
6817
6791
6818
do {
6792
- var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -O " , " -import-objc-header " , " TestInputHeader.h " , " foo.swift " ] )
6819
+ var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -O " , importHeaderFlag , " TestInputHeader.h " , " foo.swift " ] )
6793
6820
let plannedJobs = try driver. planBuild ( )
6794
6821
XCTAssertEqual ( plannedJobs. count, 2 )
6795
6822
@@ -6813,11 +6840,11 @@ final class SwiftDriverTests: XCTestCase {
6813
6840
6814
6841
// Immediate mode doesn't generate a pch
6815
6842
do {
6816
- var driver = try Driver ( args: [ " swift " , " -import-objc-header " , " TestInputHeader.h " , " foo.swift " ] )
6843
+ var driver = try Driver ( args: [ " swift " , importHeaderFlag , " TestInputHeader.h " , " foo.swift " ] )
6817
6844
let plannedJobs = try driver. planBuild ( )
6818
6845
XCTAssertEqual ( plannedJobs. count, 1 )
6819
6846
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . interpret)
6820
- XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -import-objc-header " ) ) )
6847
+ XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( importHeaderFlag ) ) )
6821
6848
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( try toPathOption ( " TestInputHeader.h " ) ) )
6822
6849
}
6823
6850
}
0 commit comments