Skip to content

Commit 5d047b4

Browse files
committed
Fix optionality issues after revert
(cherry picked from commit 8de70d3) # Conflicts: # Tests/BasicsTests/TripleTests.swift
1 parent cd27b44 commit 5d047b4

File tree

2 files changed

+52
-4
lines changed

2 files changed

+52
-4
lines changed

Sources/Basics/Vendor/Triple.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1526,7 +1526,7 @@ extension Triple {
15261526
/// `darwin` OS version number is not adjusted to match the equivalent
15271527
/// `macosx` version number. It's usually better to use `version(for:)`
15281528
/// to get Darwin versions.
1529-
public var osVersion: Version {
1529+
public var osVersion: Version? {
15301530
var osName = self.osName[...]
15311531

15321532
// Assume that the OS portion of the triple starts with the canonical name.
@@ -1623,7 +1623,7 @@ extension Triple {
16231623
///
16241624
/// This accessor is semi-private; it's typically better to use `version(for:)` or
16251625
/// `Triple.FeatureAvailability`.
1626-
public var _iOSVersion: Version {
1626+
public var _iOSVersion: Version? {
16271627
switch os {
16281628
case .darwin, .macosx:
16291629
// Ignore the version from the triple. This is only handled because the
@@ -1650,7 +1650,7 @@ extension Triple {
16501650
///
16511651
/// This accessor is semi-private; it's typically better to use `version(for:)` or
16521652
/// `Triple.FeatureAvailability`.
1653-
public var _watchOSVersion: Version {
1653+
public var _watchOSVersion: Version? {
16541654
switch os {
16551655
case .darwin, .macosx:
16561656
// Ignore the version from the triple. This is only handled because the
@@ -1659,7 +1659,7 @@ extension Triple {
16591659
// OS X.
16601660
return Version(2, 0, 0)
16611661
case .watchos:
1662-
var version = self.osVersion
1662+
guard var version = self.osVersion else { return nil }
16631663
if version.major == 0 {
16641664
version.major = 2
16651665
}

Tests/BasicsTests/TripleTests.swift

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,5 +164,53 @@ final class TripleTests: XCTestCase {
164164
XCTAssertTriple("aarch64-unknown-linux-android", matches: (.aarch64, nil, nil, .linux, .android, .elf))
165165
XCTAssertTriple("x86_64-unknown-windows-msvc", matches: (.x86_64, nil, nil, .win32, .msvc, .coff))
166166
XCTAssertTriple("wasm32-unknown-wasi", matches: (.wasm32, nil, nil, .wasi, nil, .wasm))
167+
}
168+
169+
func testTriple() {
170+
let linux = try? Triple("x86_64-unknown-linux-gnu")
171+
XCTAssertNotNil(linux)
172+
XCTAssertEqual(linux!.os, .linux)
173+
XCTAssertNil(linux!.osVersion)
174+
XCTAssertEqual(linux!.environment, .gnu)
175+
176+
let macos = try? Triple("x86_64-apple-macosx10.15")
177+
XCTAssertNotNil(macos!)
178+
XCTAssertEqual(macos!.osVersion, .init(parse: "10.15")!)
179+
let newVersion = "10.12"
180+
let tripleString = macos!.tripleString(forPlatformVersion: newVersion)
181+
XCTAssertEqual(tripleString, "x86_64-apple-macosx10.12")
182+
let macosNoX = try? Triple("x86_64-apple-macos12.2")
183+
XCTAssertNotNil(macosNoX!)
184+
XCTAssertEqual(macosNoX!.os, .macosx)
185+
XCTAssertEqual(macosNoX!.osVersion, .init(parse: "12.2")!)
186+
187+
let android = try? Triple("aarch64-unknown-linux-android24")
188+
XCTAssertNotNil(android)
189+
XCTAssertEqual(android!.os, .linux)
190+
XCTAssertEqual(android!.environment, .android)
191+
192+
let linuxWithABIVersion = try? Triple("x86_64-unknown-linux-gnu42")
193+
XCTAssertEqual(linuxWithABIVersion!.environment, .gnu)
194+
}
195+
196+
func testEquality() throws {
197+
let macOSTriple = try Triple("arm64-apple-macos")
198+
let macOSXTriple = try Triple("arm64-apple-macosx")
199+
XCTAssertEqual(macOSTriple, macOSXTriple)
200+
201+
let intelMacOSTriple = try Triple("x86_64-apple-macos")
202+
XCTAssertNotEqual(macOSTriple, intelMacOSTriple)
203+
204+
let linuxWithoutGNUABI = try Triple("x86_64-unknown-linux")
205+
let linuxWithGNUABI = try Triple("x86_64-unknown-linux-gnu")
206+
XCTAssertNotEqual(linuxWithoutGNUABI, linuxWithGNUABI)
207+
}
208+
209+
func testWASI() throws {
210+
let wasi = try Triple("wasm32-unknown-wasi")
211+
212+
// WASI dynamic libraries are only experimental,
213+
// but SwiftPM requires this property not to crash.
214+
_ = wasi.dynamicLibraryExtension
167215
}
168216
}

0 commit comments

Comments
 (0)