From f1311f7611097114c12231da420eccf5ae486631 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Wed, 29 Jan 2025 11:20:56 -0800 Subject: [PATCH 1/4] Merge pull request #78857 from Azoy/wordpair-comparable [stdlib] Add Comparable conformance to WordPair --- .../Synchronization/Atomics/WordPair.swift | 10 ++++++++++ test/abi/macOS/arm64/synchronization.swift | 3 +++ test/abi/macOS/x86_64/synchronization.swift | 3 +++ .../Synchronization/Atomics/WordPair.swift | 18 ++++++++++++++++++ 4 files changed, 34 insertions(+) diff --git a/stdlib/public/Synchronization/Atomics/WordPair.swift b/stdlib/public/Synchronization/Atomics/WordPair.swift index 1aecee05146f0..1f740115342a6 100644 --- a/stdlib/public/Synchronization/Atomics/WordPair.swift +++ b/stdlib/public/Synchronization/Atomics/WordPair.swift @@ -183,6 +183,16 @@ extension WordPair: Hashable { } } +@available(SwiftStdlib 6.2, *) +extension WordPair: Comparable { + @available(SwiftStdlib 6.2, *) + @_alwaysEmitIntoClient + @_transparent + public static func <(lhs: WordPair, rhs: WordPair) -> Bool { + (lhs.first, lhs.second) < (rhs.first, rhs.second) + } +} + @available(SwiftStdlib 6.0, *) @_unavailableInEmbedded extension WordPair: CustomStringConvertible { diff --git a/test/abi/macOS/arm64/synchronization.swift b/test/abi/macOS/arm64/synchronization.swift index dac5028a8e6d1..90d088483b850 100644 --- a/test/abi/macOS/arm64/synchronization.swift +++ b/test/abi/macOS/arm64/synchronization.swift @@ -698,3 +698,6 @@ Added: _$s15Synchronization20AtomicUpdateOrderingV22sequentiallyConsistentACvpZM Added: _$s15Synchronization20AtomicUpdateOrderingV7relaxedACvpZMV Added: _$s15Synchronization20AtomicUpdateOrderingV9acquiringACvpZMV Added: _$s15Synchronization20AtomicUpdateOrderingV9releasingACvpZMV + +// WordPair to Comparable conformance +Added: _$s15Synchronization8WordPairVSLAAMc diff --git a/test/abi/macOS/x86_64/synchronization.swift b/test/abi/macOS/x86_64/synchronization.swift index a0444b8ee8d10..e5e4fdd58b764 100644 --- a/test/abi/macOS/x86_64/synchronization.swift +++ b/test/abi/macOS/x86_64/synchronization.swift @@ -692,3 +692,6 @@ Added: _$s15Synchronization20AtomicUpdateOrderingV22sequentiallyConsistentACvpZM Added: _$s15Synchronization20AtomicUpdateOrderingV7relaxedACvpZMV Added: _$s15Synchronization20AtomicUpdateOrderingV9acquiringACvpZMV Added: _$s15Synchronization20AtomicUpdateOrderingV9releasingACvpZMV + +// WordPair to Comparable conformance +Added: _$s15Synchronization8WordPairVSLAAMc diff --git a/test/stdlib/Synchronization/Atomics/WordPair.swift b/test/stdlib/Synchronization/Atomics/WordPair.swift index d7bdb77df9f67..6f1319f8b58df 100644 --- a/test/stdlib/Synchronization/Atomics/WordPair.swift +++ b/test/stdlib/Synchronization/Atomics/WordPair.swift @@ -49,4 +49,22 @@ suite.test("basics") { } // if #available(SwiftStdlib 6.0, *) +if #available(SwiftStdlib 6.2, *) { +suite.test("comparable") { + let c0 = WordPair(first: 0, second: 0) + let c1 = WordPair(first: 1, second: 0) + let c2 = WordPair(first: 2, second: 0) + let c3 = WordPair(first: 0, second: 1) + let c4 = WordPair(first: 1, second: 2) + let c5 = WordPair(first: 2, second: 1) + expectFalse(c0 < c0) + expectTrue(c0 < c1) + expectTrue(c0 < c2) + expectTrue(c0 < c3) + expectFalse(c1 < c0) + expectTrue(c4 < c5) + expectFalse(c5 < c4) +} +} // if #available(SwiftStdlib 6.2, *) + runAllTests() From 9cca90cbed1ab8ebd5ded0e5a0f25f1b85c25487 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Thu, 6 Feb 2025 09:39:31 -0800 Subject: [PATCH 2/4] Use 6.1 availability --- stdlib/public/Synchronization/Atomics/WordPair.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/public/Synchronization/Atomics/WordPair.swift b/stdlib/public/Synchronization/Atomics/WordPair.swift index 1f740115342a6..000629f59883a 100644 --- a/stdlib/public/Synchronization/Atomics/WordPair.swift +++ b/stdlib/public/Synchronization/Atomics/WordPair.swift @@ -183,9 +183,9 @@ extension WordPair: Hashable { } } -@available(SwiftStdlib 6.2, *) +@available(SwiftStdlib 6.1, *) extension WordPair: Comparable { - @available(SwiftStdlib 6.2, *) + @available(SwiftStdlib 6.1, *) @_alwaysEmitIntoClient @_transparent public static func <(lhs: WordPair, rhs: WordPair) -> Bool { From 6d099d0723b1e60adabdfcec6cf57c2a5ae1ad9a Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Thu, 13 Feb 2025 10:55:46 -0800 Subject: [PATCH 3/4] Update test/stdlib/Synchronization/Atomics/WordPair.swift Co-authored-by: Ben Rimmington --- test/stdlib/Synchronization/Atomics/WordPair.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/stdlib/Synchronization/Atomics/WordPair.swift b/test/stdlib/Synchronization/Atomics/WordPair.swift index 6f1319f8b58df..6239fbdc35e2a 100644 --- a/test/stdlib/Synchronization/Atomics/WordPair.swift +++ b/test/stdlib/Synchronization/Atomics/WordPair.swift @@ -49,7 +49,7 @@ suite.test("basics") { } // if #available(SwiftStdlib 6.0, *) -if #available(SwiftStdlib 6.2, *) { +if #available(SwiftStdlib 6.1, *) { suite.test("comparable") { let c0 = WordPair(first: 0, second: 0) let c1 = WordPair(first: 1, second: 0) From c6f03a4eedaf9c1b3749c38df822ab6b22c75647 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Thu, 13 Feb 2025 10:55:53 -0800 Subject: [PATCH 4/4] Update test/stdlib/Synchronization/Atomics/WordPair.swift Co-authored-by: Ben Rimmington --- test/stdlib/Synchronization/Atomics/WordPair.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/stdlib/Synchronization/Atomics/WordPair.swift b/test/stdlib/Synchronization/Atomics/WordPair.swift index 6239fbdc35e2a..80bdd22072e86 100644 --- a/test/stdlib/Synchronization/Atomics/WordPair.swift +++ b/test/stdlib/Synchronization/Atomics/WordPair.swift @@ -65,6 +65,6 @@ suite.test("comparable") { expectTrue(c4 < c5) expectFalse(c5 < c4) } -} // if #available(SwiftStdlib 6.2, *) +} // if #available(SwiftStdlib 6.1, *) runAllTests()