@@ -3460,42 +3460,98 @@ final class SwiftDriverTests: XCTestCase {
3460
3460
}
3461
3461
3462
3462
func testDarwinToolchainArgumentValidation( ) throws {
3463
- XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -c " , " -target " , " x86_64 -apple-ios6.0" ,
3463
+ XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -c " , " -target " , " arm64 -apple-ios6.0" ,
3464
3464
" foo.swift " ] ) ) { error in
3465
- guard case DarwinToolchain . ToolchainValidationError . osVersionBelowMinimumDeploymentTarget( " iOS 7 " ) = error else {
3466
- XCTFail ( )
3465
+ guard case DarwinToolchain . ToolchainValidationError . osVersionBelowMinimumDeploymentTarget( platform: . iOS( . device) , version: Triple . Version ( 7 , 0 , 0 ) ) = error else {
3466
+ XCTFail ( " Unexpected error: \( error) " )
3467
+ return
3468
+ }
3469
+ }
3470
+
3471
+ XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -c " , " -target " , " x86_64-apple-ios6.0-simulator " ,
3472
+ " foo.swift " ] ) ) { error in
3473
+ guard case DarwinToolchain . ToolchainValidationError . osVersionBelowMinimumDeploymentTarget( platform: . iOS( . simulator) , version: Triple . Version ( 7 , 0 , 0 ) ) = error else {
3474
+ XCTFail ( " Unexpected error: \( error) " )
3475
+ return
3476
+ }
3477
+ }
3478
+
3479
+ XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -c " , " -target " , " arm64-apple-tvos6.0 " ,
3480
+ " foo.swift " ] ) ) { error in
3481
+ guard case DarwinToolchain . ToolchainValidationError . osVersionBelowMinimumDeploymentTarget( platform: . tvOS( . device) , version: Triple . Version ( 9 , 0 , 0 ) ) = error else {
3482
+ XCTFail ( " Unexpected error: \( error) " )
3483
+ return
3484
+ }
3485
+ }
3486
+
3487
+ XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -c " , " -target " , " x86_64-apple-tvos6.0-simulator " ,
3488
+ " foo.swift " ] ) ) { error in
3489
+ guard case DarwinToolchain . ToolchainValidationError . osVersionBelowMinimumDeploymentTarget( platform: . tvOS( . simulator) , version: Triple . Version ( 9 , 0 , 0 ) ) = error else {
3490
+ XCTFail ( " Unexpected error: \( error) " )
3491
+ return
3492
+ }
3493
+ }
3494
+
3495
+ XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -c " , " -target " , " arm64-apple-watchos1.0 " ,
3496
+ " foo.swift " ] ) ) { error in
3497
+ guard case DarwinToolchain . ToolchainValidationError . osVersionBelowMinimumDeploymentTarget( platform: . watchOS( . device) , version: Triple . Version ( 2 , 0 , 0 ) ) = error else {
3498
+ XCTFail ( " Unexpected error: \( error) " )
3499
+ return
3500
+ }
3501
+ }
3502
+
3503
+ XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -c " , " -target " , " x86_64-apple-watchos1.0-simulator " ,
3504
+ " foo.swift " ] ) ) { error in
3505
+ guard case DarwinToolchain . ToolchainValidationError . osVersionBelowMinimumDeploymentTarget( platform: . watchOS( . simulator) , version: Triple . Version ( 2 , 0 , 0 ) ) = error else {
3506
+ XCTFail ( " Unexpected error: \( error) " )
3467
3507
return
3468
3508
}
3469
3509
}
3470
3510
3471
3511
XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -c " , " -target " , " x86_64-apple-macosx10.4 " ,
3472
3512
" foo.swift " ] ) ) { error in
3473
- guard case DarwinToolchain . ToolchainValidationError . osVersionBelowMinimumDeploymentTarget( " OS X 10.9 " ) = error else {
3474
- XCTFail ( )
3513
+ guard case DarwinToolchain . ToolchainValidationError . osVersionBelowMinimumDeploymentTarget( platform : . macOS , version : Triple . Version ( 10 , 9 , 0 ) ) = error else {
3514
+ XCTFail ( " Unexpected error: \( error ) " )
3475
3515
return
3476
3516
}
3477
3517
}
3478
3518
3479
3519
XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -c " , " -target " , " armv7-apple-ios12.1 " ,
3480
3520
" foo.swift " ] ) ) { error in
3481
- guard case DarwinToolchain . ToolchainValidationError . invalidDeploymentTargetForIR( " iOS 11 " , " armv7 " ) = error else {
3482
- XCTFail ( )
3521
+ guard case DarwinToolchain . ToolchainValidationError . invalidDeploymentTargetForIR( platform : . iOS( . device ) , version : Triple . Version ( 11 , 0 , 0 ) , archName : " armv7 " ) = error else {
3522
+ XCTFail ( " Unexpected error: \( error ) " )
3483
3523
return
3484
3524
}
3485
3525
}
3486
3526
3487
3527
XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -emit-module " , " -c " , " -target " ,
3488
3528
" armv7s-apple-ios12.0 " , " foo.swift " ] ) ) { error in
3489
- guard case DarwinToolchain . ToolchainValidationError . invalidDeploymentTargetForIR( " iOS 11 " , " armv7s " ) = error else {
3490
- XCTFail ( )
3529
+ guard case DarwinToolchain . ToolchainValidationError . invalidDeploymentTargetForIR( platform: . iOS( . device) , version: Triple . Version ( 11 , 0 , 0 ) , archName: " armv7s " ) = error else {
3530
+ XCTFail ( " Unexpected error: \( error) " )
3531
+ return
3532
+ }
3533
+ }
3534
+
3535
+ XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -emit-module " , " -c " , " -target " ,
3536
+ " i386-apple-ios12.0-simulator " , " foo.swift " ] ) ) { error in
3537
+ guard case DarwinToolchain . ToolchainValidationError . invalidDeploymentTargetForIR( platform: . iOS( . simulator) , version: Triple . Version ( 11 , 0 , 0 ) , archName: " i386 " ) = error else {
3538
+ XCTFail ( " Unexpected error: \( error) " )
3491
3539
return
3492
3540
}
3493
3541
}
3494
3542
3495
3543
XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -emit-module " , " -c " , " -target " ,
3496
3544
" armv7k-apple-watchos12.0 " , " foo.swift " ] ) ) { error in
3497
- guard case DarwinToolchain . ToolchainValidationError . invalidDeploymentTargetForIR( " watchOS 8.7 " , " armv7k " ) = error else {
3498
- XCTFail ( )
3545
+ guard case DarwinToolchain . ToolchainValidationError . invalidDeploymentTargetForIR( platform: . watchOS( . device) , version: Triple . Version ( 9 , 0 , 0 ) , archName: " armv7k " ) = error else {
3546
+ XCTFail ( " Unexpected error: \( error) " )
3547
+ return
3548
+ }
3549
+ }
3550
+
3551
+ XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -emit-module " , " -c " , " -target " ,
3552
+ " i386-apple-watchos12.0 " , " foo.swift " ] ) ) { error in
3553
+ guard case DarwinToolchain . ToolchainValidationError . invalidDeploymentTargetForIR( platform: . watchOS( . simulator) , version: Triple . Version ( 7 , 0 , 0 ) , archName: " i386 " ) = error else {
3554
+ XCTFail ( " Unexpected error: \( error) " )
3499
3555
return
3500
3556
}
3501
3557
}
@@ -3504,34 +3560,41 @@ final class SwiftDriverTests: XCTestCase {
3504
3560
" -target-variant " , " x86_64-apple-macosx10.14 " ,
3505
3561
" foo.swift " ] ) ) { error in
3506
3562
guard case DarwinToolchain . ToolchainValidationError . unsupportedTargetVariant( variant: _) = error else {
3507
- XCTFail ( )
3563
+ XCTFail ( " Unexpected error: \( error ) " )
3508
3564
return
3509
3565
}
3510
3566
}
3511
3567
3512
3568
XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -c " , " -static-stdlib " , " -target " , " x86_64-apple-macosx10.14 " ,
3513
3569
" foo.swift " ] ) ) { error in
3514
3570
guard case DarwinToolchain . ToolchainValidationError . argumentNotSupported( " -static-stdlib " ) = error else {
3515
- XCTFail ( )
3571
+ XCTFail ( " Unexpected error: \( error ) " )
3516
3572
return
3517
3573
}
3518
3574
}
3519
3575
3520
3576
XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -c " , " -static-executable " , " -target " , " x86_64-apple-macosx10.14 " ,
3521
3577
" foo.swift " ] ) ) { error in
3522
3578
guard case DarwinToolchain . ToolchainValidationError . argumentNotSupported( " -static-executable " ) = error else {
3523
- XCTFail ( )
3579
+ XCTFail ( " Unexpected error: \( error ) " )
3524
3580
return
3525
3581
}
3526
3582
}
3527
3583
3528
3584
XCTAssertThrowsError ( try Driver ( args: [ " swiftc " , " -c " , " -target " , " x86_64-apple-macosx10.14 " , " -experimental-cxx-stdlib " , " libstdc++ " ,
3529
3585
" foo.swift " ] ) ) { error in
3530
3586
guard case DarwinToolchain . ToolchainValidationError . darwinOnlySupportsLibCxx = error else {
3531
- XCTFail ( )
3587
+ XCTFail ( " Unexpected error: \( error ) " )
3532
3588
return
3533
3589
}
3534
3590
}
3591
+
3592
+ // Not actually a valid arch for tvOS, but we shouldn't fall into the iOS case by mistake and emit a message about iOS >= 11 not supporting armv7.
3593
+ XCTAssertNoThrow ( try Driver ( args: [ " swiftc " , " -c " , " -target " , " armv7-apple-tvos9.0 " , " foo.swift " ] ) )
3594
+
3595
+ // Ensure arm64_32 is not restricted to back-deployment like other 32-bit archs (armv7k/i386).
3596
+ XCTAssertNoThrow ( try Driver ( args: [ " swiftc " , " -emit-module " , " -c " , " -target " , " arm64_32-apple-watchos12.0 " , " foo.swift " ] ) )
3597
+
3535
3598
// On non-darwin hosts, libArcLite won't be found and a warning will be emitted
3536
3599
#if os(macOS)
3537
3600
try assertNoDriverDiagnostics ( args: " swiftc " , " -c " , " -target " , " x86_64-apple-macosx10.14 " , " -link-objc-runtime " , " foo.swift " )
0 commit comments