Skip to content

Commit 417e173

Browse files
authored
Merge pull request #31890 from gribozavr/fix-new-array-swift-gyb
Fix and reenable NewArray.swift.gyb
2 parents 24fa750 + cfbcd85 commit 417e173

File tree

1 file changed

+23
-31
lines changed

1 file changed

+23
-31
lines changed

validation-test/stdlib/NewArray.swift.gyb

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,11 @@
1010
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
1111
//
1212
//===----------------------------------------------------------------------===//
13-
// RUN-DISABLED: %target-run-simple-swift | %FileCheck %s
1413
// RUN: %empty-directory(%t)
1514
// RUN: %gyb %s -o %t/NewArray.swift
1615
// RUN: %line-directive %t/NewArray.swift -- %target-build-swift %t/NewArray.swift -o %t/a.out -Xfrontend -disable-access-control
1716
// RUN: %target-run %t/a.out 2>&1 | %line-directive %t/NewArray.swift -- %FileCheck %t/NewArray.swift --check-prefix=CHECK --check-prefix=CHECK-%target-runtime
1817
// REQUIRES: executable_test
19-
// XFAIL: *
2018

2119
import StdlibUnittest
2220
import StdlibCollectionUnittest
@@ -40,15 +38,14 @@ protocol MyArrayProtocol
4038
: RandomAccessCollection,
4139
RangeReplaceableCollection,
4240
MutableCollection,
43-
ArrayLiteralConvertible {
44-
45-
associatedtype Iterator : IteratorProtocol
46-
41+
ExpressibleByArrayLiteral
42+
where ArrayLiteralElement == Element
43+
{
4744
var _owner: AnyObject? { get }
4845

4946
var capacity: Int { get }
5047

51-
func += <
48+
static func += <
5249
S : Sequence
5350
>(lhs: inout Self, rhs: S)
5451
where S.Iterator.Element == Iterator.Element
@@ -89,8 +86,7 @@ func test<
8986
T : MyArrayProtocol
9087
>(_: T.Type, _ label: String)
9188
where
92-
T.Iterator.Element == LifetimeTracked,
93-
T.Iterator.Element == T.Element,
89+
T.Element == LifetimeTracked,
9490
T.Index == Int {
9591
print("test: \(label)...", terminator: "")
9692

@@ -113,15 +109,15 @@ T.Index == Int {
113109
x += LifetimeTracked(0)..<LifetimeTracked(2)
114110
let bufferId1 = checkReallocation(x, bufferId0, false)
115111

116-
for i in x.count..<(x.capacity + 1) {
117-
let bufferId1a = checkReallocation(x, bufferId1, false)
112+
for _ in x.count..<(x.capacity + 1) {
113+
_ = checkReallocation(x, bufferId1, false)
118114
x.append(LifetimeTracked(13))
119115
}
120116
let bufferId2 = checkReallocation(x, bufferId1, true)
121117

122118
let y = x
123119
x[x.index(before: x.endIndex)] = LifetimeTracked(17)
124-
let bufferId3 = checkReallocation(x, bufferId2, true)
120+
_ = checkReallocation(x, bufferId2, true)
125121
checkEqual(x, y, false)
126122

127123
func checkReallocations(
@@ -200,39 +196,42 @@ func testAsArray() {
200196
// CHECK-NEXT: true
201197

202198
let zz = y[0..<2]
203-
print(zz._bufferID)
199+
print(zz._bufferID!)
204200
// CHECK-NEXT: 0x
205201
}
206202
testAsArray()
207203

208204
#if _runtime(_ObjC)
209205
import Foundation
210206

211-
func nsArrayOfStrings() -> Array<NSString> {
207+
func nsArrayOfStrings() -> NSArray {
212208
let src: ContiguousArray<NSString> = ["foo", "bar", "baz"]
213209

214210
return src.withUnsafeBufferPointer {
215-
let ns = NSArray(
211+
return NSArray(
216212
objects: unsafeBitCast($0.baseAddress!,
217213
to: UnsafeMutablePointer<AnyObject>.self),
218214
count: $0.count)
219-
return ns as! [NSString]
220215
}
221216
}
222217

218+
func swiftArrayWithNSArrayOfStrings() -> Array<NSString> {
219+
return nsArrayOfStrings() as! [NSString]
220+
}
221+
223222
func testCocoa() {
224223
print("== Cocoa ==")
225224
// CHECK-objc: == Cocoa ==
226225

227-
var a = nsArrayOfStrings()
226+
var a = swiftArrayWithNSArrayOfStrings()
228227
printSequence(a)
229228
// CHECK-objc-NEXT: [foo, bar, baz]
230229

231230
a.append("qux")
232231
printSequence(a)
233232
// CHECK-objc-NEXT: [foo, bar, baz, qux]
234233

235-
a = nsArrayOfStrings()
234+
a = swiftArrayWithNSArrayOfStrings()
236235
printSequence(a)
237236
// CHECK-objc-NEXT: [foo, bar, baz]
238237

@@ -246,12 +245,12 @@ func testCocoa() {
246245
printSequence(b)
247246
// CHECK-objc-NEXT: [foo, bar, baz]
248247

249-
a = nsArrayOfStrings()
248+
a = swiftArrayWithNSArrayOfStrings()
250249
a.insert("bag", at: 2)
251250
printSequence(a)
252251
// CHECK-objc-NEXT: [foo, bar, bag, baz]
253252

254-
a = nsArrayOfStrings()
253+
a = swiftArrayWithNSArrayOfStrings()
255254
a.reserveCapacity(30)
256255
printSequence(a)
257256
// CHECK-objc-NEXT: [foo, bar, baz]
@@ -269,12 +268,6 @@ func testCocoa() {
269268
testCocoa()
270269
#endif // _runtime(_ObjC)
271270

272-
extension ArraySlice {
273-
mutating func qsort(_ compare: @escaping (Element, Element) -> Bool) {
274-
_introSort(&self, subRange: Range(self.indices), by: compare)
275-
}
276-
}
277-
278271
func testSlice() {
279272
print("== ArraySlice ==")
280273
// CHECK: == ArraySlice ==
@@ -301,14 +294,13 @@ func testSlice() {
301294
printSequence(b) // CHECK-NEXT: [0, 1, 2, 3, 41, 5, 6, 7, 8, 9]
302295

303296
let c = b
304-
b[b.startIndex..<b.endIndex].qsort(<)
297+
b[b.startIndex..<b.endIndex].sort(by: <)
305298
printSequence(b) // CHECK-NEXT: [0, 1, 2, 3, 5, 6, 7, 8, 9, 41]
306299
printSequence(c) // CHECK-NEXT: [0, 1, 2, 3, 41, 5, 6, 7, 8, 9]
307300

308301
#if _runtime(_ObjC)
309302
// Now a bridged slice
310-
var a = Array<NSString>(
311-
_ArrayBuffer(nsArray: nsArrayOfStrings()._buffer._asCocoaArray()))
303+
let a = Array<NSString>(_buffer: _ArrayBuffer(nsArray: nsArrayOfStrings()))
312304

313305
printSequence(a) // CHECK-objc-NEXT: [foo, bar, baz]
314306

@@ -456,8 +448,8 @@ func testIsEmptyFirstLast${A}() {
456448
print("<\(${A}(3..<43).first!)>") // CHECK-NEXT: <3>
457449
print("<\(${A}(3..<43).last!)>") // CHECK-NEXT: <42>
458450

459-
print("<\(${A}<Int>().first)>") // CHECK-NEXT: nil
460-
print("<\(${A}<Int>().last)>") // CHECK-NEXT: nil
451+
print("<\(String(describing: ${A}<Int>().first))>") // CHECK-NEXT: nil
452+
print("<\(String(describing:${A}<Int>().last))>") // CHECK-NEXT: nil
461453
462454
var a = ${A}(LifetimeTracked(0)..<LifetimeTracked(10))
463455
print(a.removeLast().value) // CHECK-NEXT: 9

0 commit comments

Comments
 (0)