Skip to content

Commit a9104b3

Browse files
committed
Conditional compilation for CountableRange variants of removeSubrange
These are no longer needed in Swift 4.2
1 parent 25fa223 commit a9104b3

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

Sources/SortedArray.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,18 @@ extension SortedArray {
150150
_elements.removeSubrange(bounds)
151151
}
152152

153+
// Starting with Swift 4.2, CountableRange and CountableClosedRange are typealiases for
154+
// Range and ClosedRange, so these methods trigger "Invalid redeclaration" errors.
155+
// Compile them only for older compiler versions.
156+
// swift(3.1): Latest version of Swift 3 under the Swift 3 compiler.
157+
// swift(3.2): Swift 4 compiler under Swift 3 mode.
158+
// swift(3.3): Swift 4.1 compiler under Swift 3 mode.
159+
// swift(3.4): Swift 4.2 compiler under Swift 3 mode.
160+
// swift(4.0): Swift 4 compiler
161+
// swift(4.1): Swift 4.1 compiler
162+
// swift(4.1.50): Swift 4.2 compiler in Swift 4 mode
163+
// swift(4.2): Swift 4.2 compiler
164+
#if !swift(>=4.1.50)
153165
/// Removes the elements in the specified subrange from the array.
154166
///
155167
/// - Parameter bounds: The range of the array to be removed. The
@@ -169,6 +181,7 @@ extension SortedArray {
169181
public mutating func removeSubrange(_ bounds: CountableClosedRange<Int>) {
170182
_elements.removeSubrange(bounds)
171183
}
184+
#endif
172185

173186
/// Removes the specified number of elements from the beginning of the
174187
/// array.

Tests/SortedArrayTests/SortedArrayTests.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,13 @@ class SortedArrayTests: XCTestCase {
273273
assertElementsEqual(sut, ["a","b"])
274274
}
275275

276+
func testRemoveCountableSubrange() {
277+
var sut = SortedArray(unsorted: ["a","d","c","b"])
278+
let countableRange: CountableRange<Int> = 2..<4
279+
sut.removeSubrange(countableRange)
280+
assertElementsEqual(sut, ["a","b"])
281+
}
282+
276283
func testRemoveFirst() {
277284
var sut = SortedArray(unsorted: [3,4,2,1])
278285
let removedElement = sut.removeFirst()
@@ -379,6 +386,7 @@ extension SortedArrayTests {
379386
("testFilter", testFilter),
380387
("testRemoveAtIndex", testRemoveAtIndex),
381388
("testRemoveSubrange", testRemoveSubrange),
389+
("testRemoveCountableSubrange", testRemoveCountableSubrange),
382390
("testRemoveFirst", testRemoveFirst),
383391
("testRemoveFirstN", testRemoveFirstN),
384392
("testRemoveLast", testRemoveLast),

0 commit comments

Comments
 (0)