@@ -4497,6 +4497,20 @@ final class SwiftDriverTests: XCTestCase {
44974497 XCTAssert ( plannedJobs [ 1 ] . inputs [ 1 ] . file. extension == " pch " )
44984498 }
44994499
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+
45004514 func testEnvironmentInferenceWarning( ) throws {
45014515 let sdkRoot = try testInputsPath. appending ( component: " SDKChecks " ) . appending ( component: " iPhoneOS.sdk " )
45024516
@@ -6600,8 +6614,21 @@ final class SwiftDriverTests: XCTestCase {
66006614 }
66016615
66026616 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+
66036630 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 " ] )
66056632 let plannedJobs = try driver. planBuild ( )
66066633 XCTAssertEqual ( plannedJobs. count, 2 )
66076634
@@ -6620,23 +6647,23 @@ final class SwiftDriverTests: XCTestCase {
66206647 XCTAssertEqual ( plannedJobs [ 1 ] . kind, . compile)
66216648 XCTAssertEqual ( plannedJobs [ 1 ] . inputs. count, 2 )
66226649 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 ) ) )
66246651 XCTAssertTrue ( commandContainsTemporaryPath ( plannedJobs [ 1 ] . commandLine, " TestInputHeader.pch " ) )
66256652 }
66266653
66276654 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 " ] )
66296656 let plannedJobs = try driver. planBuild ( )
66306657 XCTAssertEqual ( plannedJobs. count, 1 )
66316658
66326659 XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
66336660 XCTAssertEqual ( plannedJobs [ 0 ] . inputs. count, 1 )
66346661 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 ) ) )
66366663 }
66376664
66386665 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 " ] )
66406667 let plannedJobs = try driver. planBuild ( )
66416668 XCTAssertEqual ( plannedJobs. count, 2 )
66426669
@@ -6660,7 +6687,7 @@ final class SwiftDriverTests: XCTestCase {
66606687 }
66616688
66626689 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 " ] )
66646691 let plannedJobs = try driver. planBuild ( )
66656692 XCTAssertEqual ( plannedJobs. count, 2 )
66666693
@@ -6683,31 +6710,31 @@ final class SwiftDriverTests: XCTestCase {
66836710 }
66846711
66856712 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 " ] )
66876714 let plannedJobs = try driver. planBuild ( )
66886715 XCTAssertEqual ( plannedJobs. count, 1 )
66896716
66906717 XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
66916718 XCTAssertEqual ( plannedJobs [ 0 ] . inputs. count, 1 )
66926719 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 ) ) )
66946721 XCTAssertFalse ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -pch-output-dir " ) ) )
66956722 }
66966723
66976724 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 " ] )
66996726 let plannedJobs = try driver. planBuild ( )
67006727 XCTAssertEqual ( plannedJobs. count, 1 )
67016728
67026729 XCTAssertEqual ( plannedJobs [ 0 ] . kind, . compile)
67036730 XCTAssertEqual ( plannedJobs [ 0 ] . inputs. count, 1 )
67046731 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 ) ) )
67066733 XCTAssertFalse ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -pch-output-dir " ) ) )
67076734 }
67086735
67096736 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 " ] )
67116738 let plannedJobs = try driver. planBuild ( )
67126739 XCTAssertEqual ( plannedJobs. count, 2 )
67136740
@@ -6734,7 +6761,7 @@ final class SwiftDriverTests: XCTestCase {
67346761 }
67356762
67366763 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 " ] )
67386765 let plannedJobs = try driver. planBuild ( )
67396766 XCTAssertEqual ( plannedJobs. count, 3 )
67406767
@@ -6766,7 +6793,7 @@ final class SwiftDriverTests: XCTestCase {
67666793 }
67676794
67686795 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 " ] )
67706797 let plannedJobs = try driver. planBuild ( )
67716798 XCTAssertEqual ( plannedJobs. count, 2 )
67726799
@@ -6789,7 +6816,7 @@ final class SwiftDriverTests: XCTestCase {
67896816 }
67906817
67916818 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 " ] )
67936820 let plannedJobs = try driver. planBuild ( )
67946821 XCTAssertEqual ( plannedJobs. count, 2 )
67956822
@@ -6813,11 +6840,11 @@ final class SwiftDriverTests: XCTestCase {
68136840
68146841 // Immediate mode doesn't generate a pch
68156842 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 " ] )
68176844 let plannedJobs = try driver. planBuild ( )
68186845 XCTAssertEqual ( plannedJobs. count, 1 )
68196846 XCTAssertEqual ( plannedJobs [ 0 ] . kind, . interpret)
6820- XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -import-objc-header " ) ) )
6847+ XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( importHeaderFlag ) ) )
68216848 XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( try toPathOption ( " TestInputHeader.h " ) ) )
68226849 }
68236850 }
0 commit comments