mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[stdlib] += no longer appends array elements
+= only extends arrays with another sequence of the same element type. Fixes <rdar://problem/17151420> The use of the overloaded += operator in Swift is inconsistent and confusing with Arrays. Note that this commits generated 3 new radars against the type checker: <rdar://problem/17751308> <rdar://problem/17750582> <rdar://problem/17751359> Swift SVN r20274
This commit is contained in:
@@ -51,9 +51,6 @@ internal protocol ArrayType
|
|||||||
/// Append newElement to the Array in O(1) (amortized)
|
/// Append newElement to the Array in O(1) (amortized)
|
||||||
mutating func append(newElement: Self.Generator.Element)
|
mutating func append(newElement: Self.Generator.Element)
|
||||||
|
|
||||||
/// Operator form of append
|
|
||||||
func += (inout lhs: Self, rhs: Self.Generator.Element)
|
|
||||||
|
|
||||||
/// Append elements from `sequence` to the Array
|
/// Append elements from `sequence` to the Array
|
||||||
mutating func extend<
|
mutating func extend<
|
||||||
S : SequenceType
|
S : SequenceType
|
||||||
|
|||||||
@@ -634,10 +634,6 @@ where C.Generator.Element == T
|
|||||||
}
|
}
|
||||||
lhs._buffer.count = newCount
|
lhs._buffer.count = newCount
|
||||||
}
|
}
|
||||||
|
|
||||||
public func += <T>(inout lhs: ${Self}<T>, rhs: T) {
|
|
||||||
_arrayAppend(&lhs._buffer, rhs)
|
|
||||||
}
|
|
||||||
% end
|
% end
|
||||||
|
|
||||||
//===--- generic helpers --------------------------------------------------===//
|
//===--- generic helpers --------------------------------------------------===//
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ extension String {
|
|||||||
var result = ContiguousArray<UTF8.CodeUnit>()
|
var result = ContiguousArray<UTF8.CodeUnit>()
|
||||||
result.reserveCapacity(countElements(utf8) + 1)
|
result.reserveCapacity(countElements(utf8) + 1)
|
||||||
result += utf8
|
result += utf8
|
||||||
result += 0
|
result.append(0)
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public struct SourceLocStack {
|
|||||||
|
|
||||||
func with(loc: SourceLoc) -> SourceLocStack {
|
func with(loc: SourceLoc) -> SourceLocStack {
|
||||||
var locs = self.locs
|
var locs = self.locs
|
||||||
locs += loc
|
locs.append(loc)
|
||||||
return SourceLocStack(_locs: locs)
|
return SourceLocStack(_locs: locs)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -354,7 +354,7 @@ func checkGenerator<
|
|||||||
var mutableGen = generator
|
var mutableGen = generator
|
||||||
var actual: [Element] = []
|
var actual: [Element] = []
|
||||||
while let e = mutableGen.next() {
|
while let e = mutableGen.next() {
|
||||||
actual += e
|
actual.append(e)
|
||||||
}
|
}
|
||||||
expectEqual(expected, actual, stackTrace: stackTrace.withCurrentLoc())
|
expectEqual(expected, actual, stackTrace: stackTrace.withCurrentLoc())
|
||||||
|
|
||||||
@@ -398,7 +398,7 @@ func checkCollection<
|
|||||||
expectEqual(startIndex, collection.startIndex)
|
expectEqual(startIndex, collection.startIndex)
|
||||||
expectEqual(endIndex, collection.endIndex)
|
expectEqual(endIndex, collection.endIndex)
|
||||||
|
|
||||||
actual += collection[index]
|
actual.append(collection[index])
|
||||||
++index
|
++index
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1022,7 +1022,7 @@ func testCOW_Fast_GenerateDoesNotReallocate() {
|
|||||||
var gen = d.generate()
|
var gen = d.generate()
|
||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
while let (key, value) = gen.next() {
|
while let (key, value) = gen.next() {
|
||||||
pairs += (key, value)
|
pairs += [(key, value)]
|
||||||
}
|
}
|
||||||
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
||||||
assert(identity1 == reinterpretCast(d))
|
assert(identity1 == reinterpretCast(d))
|
||||||
@@ -1039,7 +1039,18 @@ func testCOW_Slow_GenerateDoesNotReallocate() {
|
|||||||
var gen = d.generate()
|
var gen = d.generate()
|
||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
while let (key, value) = gen.next() {
|
while let (key, value) = gen.next() {
|
||||||
pairs += (key.value, value.value)
|
// FIXME: This doesn't work (<rdar://problem/17751308> Can't +=
|
||||||
|
// with array literal of pairs)
|
||||||
|
// pairs += [(key.value, value.value)]
|
||||||
|
|
||||||
|
// FIXME: This doesn't work (<rdar://problem/17750582> generics over tuples)
|
||||||
|
// pairs.append((key.value, value.value))
|
||||||
|
|
||||||
|
// FIXME: This doesn't work (<rdar://problem/17751359>)
|
||||||
|
// pairs.append(key.value, value.value)
|
||||||
|
|
||||||
|
let kv = (key.value, value.value)
|
||||||
|
pairs += [kv]
|
||||||
}
|
}
|
||||||
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
||||||
assert(identity1 == reinterpretCast(d))
|
assert(identity1 == reinterpretCast(d))
|
||||||
@@ -1219,7 +1230,7 @@ func testDeleteChainCollisionRandomized() {
|
|||||||
}
|
}
|
||||||
let hashValue = uniformRandom(chainLength - chainOverlap) * collisionChains
|
let hashValue = uniformRandom(chainLength - chainOverlap) * collisionChains
|
||||||
let k = TestKeyTy(value: value, hashValue: hashValue)
|
let k = TestKeyTy(value: value, hashValue: hashValue)
|
||||||
knownKeys += k
|
knownKeys += [k]
|
||||||
return k
|
return k
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1591,7 +1602,8 @@ func slurpFastEnumeration(
|
|||||||
for i in 0..<returnedCount {
|
for i in 0..<returnedCount {
|
||||||
let key: AnyObject = state.itemsPtr[i]!
|
let key: AnyObject = state.itemsPtr[i]!
|
||||||
let value: AnyObject = d.objectForKey(key)
|
let value: AnyObject = d.objectForKey(key)
|
||||||
pairs += ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
let kv = ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
||||||
|
pairs += [kv]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1617,7 +1629,7 @@ func slurpFastEnumerationFromObjC(
|
|||||||
let pair = pairAnyObject as NSArray
|
let pair = pairAnyObject as NSArray
|
||||||
let key = (pair[0] as TestObjCKeyTy).value
|
let key = (pair[0] as TestObjCKeyTy).value
|
||||||
let value = (pair[1] as TestObjCValueTy).value
|
let value = (pair[1] as TestObjCValueTy).value
|
||||||
pairs += (key, value)
|
pairs += [(key, value)]
|
||||||
}
|
}
|
||||||
return pairs
|
return pairs
|
||||||
}
|
}
|
||||||
@@ -1909,7 +1921,8 @@ func test_BridgedFromObjC_Verbatim_SubscriptWithIndex() {
|
|||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
for var i = startIndex; i != endIndex; ++i {
|
for var i = startIndex; i != endIndex; ++i {
|
||||||
var (key, value: AnyObject) = d[i]
|
var (key, value: AnyObject) = d[i]
|
||||||
pairs += ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
let kv = ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
||||||
|
pairs += [kv]
|
||||||
}
|
}
|
||||||
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
||||||
assert(identity1 == reinterpretCast(d))
|
assert(identity1 == reinterpretCast(d))
|
||||||
@@ -1940,7 +1953,8 @@ func test_BridgedFromObjC_Nonverbatim_SubscriptWithIndex() {
|
|||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
for var i = startIndex; i != endIndex; ++i {
|
for var i = startIndex; i != endIndex; ++i {
|
||||||
var (key, value) = d[i]
|
var (key, value) = d[i]
|
||||||
pairs += (key.value, value.value)
|
let kv = (key.value, value.value)
|
||||||
|
pairs += [kv]
|
||||||
}
|
}
|
||||||
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
||||||
assert(identity1 == reinterpretCast(d))
|
assert(identity1 == reinterpretCast(d))
|
||||||
@@ -2592,7 +2606,8 @@ func test_BridgedFromObjC_Verbatim_Generate() {
|
|||||||
var gen = d.generate()
|
var gen = d.generate()
|
||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
while let (key, value: AnyObject) = gen.next() {
|
while let (key, value: AnyObject) = gen.next() {
|
||||||
pairs += ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
let kv = ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
||||||
|
pairs.append(kv)
|
||||||
}
|
}
|
||||||
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
||||||
// The following is not required by the GeneratorType protocol, but
|
// The following is not required by the GeneratorType protocol, but
|
||||||
@@ -2615,7 +2630,8 @@ func test_BridgedFromObjC_Nonverbatim_Generate() {
|
|||||||
var gen = d.generate()
|
var gen = d.generate()
|
||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
while let (key, value) = gen.next() {
|
while let (key, value) = gen.next() {
|
||||||
pairs += (key.value, value.value)
|
let kv = (key.value, value.value)
|
||||||
|
pairs.append(kv)
|
||||||
}
|
}
|
||||||
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
||||||
// The following is not required by the GeneratorType protocol, but
|
// The following is not required by the GeneratorType protocol, but
|
||||||
@@ -2685,11 +2701,12 @@ func test_BridgedFromObjC_Verbatim_Generate_Huge() {
|
|||||||
var gen = d.generate()
|
var gen = d.generate()
|
||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
while let (key, value: AnyObject) = gen.next() {
|
while let (key, value: AnyObject) = gen.next() {
|
||||||
pairs += ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
let kv = ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
||||||
|
pairs.append(kv)
|
||||||
}
|
}
|
||||||
var expectedPairs = Array<(Int, Int)>()
|
var expectedPairs = Array<(Int, Int)>()
|
||||||
for i in 1...32 {
|
for i in 1...32 {
|
||||||
expectedPairs += (i, 1000 + i)
|
expectedPairs += [(i, 1000 + i)]
|
||||||
}
|
}
|
||||||
assert(equalsUnordered(pairs, expectedPairs))
|
assert(equalsUnordered(pairs, expectedPairs))
|
||||||
// The following is not required by the GeneratorType protocol, but
|
// The following is not required by the GeneratorType protocol, but
|
||||||
@@ -2712,11 +2729,12 @@ func test_BridgedFromObjC_Nonverbatim_Generate_Huge() {
|
|||||||
var gen = d.generate()
|
var gen = d.generate()
|
||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
while let (key, value) = gen.next() {
|
while let (key, value) = gen.next() {
|
||||||
pairs += (key.value, value.value)
|
let kv = (key.value, value.value)
|
||||||
|
pairs.append(kv)
|
||||||
}
|
}
|
||||||
var expectedPairs = Array<(Int, Int)>()
|
var expectedPairs = Array<(Int, Int)>()
|
||||||
for i in 1...32 {
|
for i in 1...32 {
|
||||||
expectedPairs += (i, 1000 + i)
|
expectedPairs += [(i, 1000 + i)]
|
||||||
}
|
}
|
||||||
assert(equalsUnordered(pairs, expectedPairs))
|
assert(equalsUnordered(pairs, expectedPairs))
|
||||||
// The following is not required by the GeneratorType protocol, but
|
// The following is not required by the GeneratorType protocol, but
|
||||||
@@ -2742,7 +2760,8 @@ func test_BridgedFromObjC_Verbatim_Generate_ParallelArray() {
|
|||||||
var gen = d.generate()
|
var gen = d.generate()
|
||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
while let (key, value: AnyObject) = gen.next() {
|
while let (key, value: AnyObject) = gen.next() {
|
||||||
pairs += ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
let kv = ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
||||||
|
pairs.append(kv)
|
||||||
}
|
}
|
||||||
var expectedPairs = [ (10, 1111), (20, 1111), (30, 1111), (40, 1111) ]
|
var expectedPairs = [ (10, 1111), (20, 1111), (30, 1111), (40, 1111) ]
|
||||||
assert(equalsUnordered(pairs, expectedPairs))
|
assert(equalsUnordered(pairs, expectedPairs))
|
||||||
@@ -2770,7 +2789,8 @@ func test_BridgedFromObjC_Nonverbatim_Generate_ParallelArray() {
|
|||||||
var gen = d.generate()
|
var gen = d.generate()
|
||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
while let (key, value) = gen.next() {
|
while let (key, value) = gen.next() {
|
||||||
pairs += (key.value, value.value)
|
let kv = (key.value, value.value)
|
||||||
|
pairs.append(kv)
|
||||||
}
|
}
|
||||||
var expectedPairs = [ (10, 1111), (20, 1111), (30, 1111), (40, 1111) ]
|
var expectedPairs = [ (10, 1111), (20, 1111), (30, 1111), (40, 1111) ]
|
||||||
assert(equalsUnordered(pairs, expectedPairs))
|
assert(equalsUnordered(pairs, expectedPairs))
|
||||||
@@ -2955,7 +2975,8 @@ func test_BridgedFromObjC_Verbatim_ArrayOfDictionaries() {
|
|||||||
var gen = d.generate()
|
var gen = d.generate()
|
||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
while let (key, value: AnyObject) = gen.next() {
|
while let (key, value: AnyObject) = gen.next() {
|
||||||
pairs += ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
let kv = ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
||||||
|
pairs.append(kv)
|
||||||
}
|
}
|
||||||
var expectedPairs = [ (10, 1010 + i), (20, 1020 + i), (30, 1030 + i) ]
|
var expectedPairs = [ (10, 1010 + i), (20, 1020 + i), (30, 1030 + i) ]
|
||||||
assert(equalsUnordered(pairs, expectedPairs))
|
assert(equalsUnordered(pairs, expectedPairs))
|
||||||
@@ -2979,7 +3000,8 @@ func test_BridgedFromObjC_Nonverbatim_ArrayOfDictionaries() {
|
|||||||
var gen = d.generate()
|
var gen = d.generate()
|
||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
while let (key, value) = gen.next() {
|
while let (key, value) = gen.next() {
|
||||||
pairs += (key.value, value.value)
|
let kv = (key.value, value.value)
|
||||||
|
pairs.append(kv)
|
||||||
}
|
}
|
||||||
var expectedPairs = [ (10, 1010 + i), (20, 1020 + i), (30, 1030 + i) ]
|
var expectedPairs = [ (10, 1010 + i), (20, 1020 + i), (30, 1030 + i) ]
|
||||||
assert(equalsUnordered(pairs, expectedPairs))
|
assert(equalsUnordered(pairs, expectedPairs))
|
||||||
@@ -3063,7 +3085,8 @@ func test_BridgedToObjC_KeyEnumerator_NextObject() {
|
|||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
while let key: AnyObject = enumerator.nextObject() {
|
while let key: AnyObject = enumerator.nextObject() {
|
||||||
let value: AnyObject = d.objectForKey(key)
|
let value: AnyObject = d.objectForKey(key)
|
||||||
pairs += ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
let kv = ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
||||||
|
pairs.append(kv)
|
||||||
}
|
}
|
||||||
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
||||||
|
|
||||||
@@ -3175,7 +3198,8 @@ func test_BridgedToObjC_KeyValue_ValueTypesCustomBridged() {
|
|||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
while let key: AnyObject = enumerator.nextObject() {
|
while let key: AnyObject = enumerator.nextObject() {
|
||||||
let value: AnyObject = d.objectForKey(key)
|
let value: AnyObject = d.objectForKey(key)
|
||||||
pairs += ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
let kv = ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
||||||
|
pairs.append(kv)
|
||||||
}
|
}
|
||||||
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
||||||
|
|
||||||
@@ -3207,7 +3231,8 @@ func test_BridgedToObjC_Key_ValueTypeCustomBridged() {
|
|||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
while let key: AnyObject = enumerator.nextObject() {
|
while let key: AnyObject = enumerator.nextObject() {
|
||||||
let value: AnyObject = d.objectForKey(key)
|
let value: AnyObject = d.objectForKey(key)
|
||||||
pairs += ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
let kv = ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
||||||
|
pairs.append(kv)
|
||||||
}
|
}
|
||||||
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
||||||
|
|
||||||
@@ -3239,7 +3264,8 @@ func test_BridgedToObjC_Value_ValueTypeCustomBridged() {
|
|||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
while let key: AnyObject = enumerator.nextObject() {
|
while let key: AnyObject = enumerator.nextObject() {
|
||||||
let value: AnyObject = d.objectForKey(key)
|
let value: AnyObject = d.objectForKey(key)
|
||||||
pairs += ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
let kv = ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
||||||
|
pairs.append(kv)
|
||||||
}
|
}
|
||||||
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
||||||
|
|
||||||
@@ -3281,7 +3307,8 @@ func test_BridgingRoundtrip() {
|
|||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
while let key: AnyObject = enumerator.nextObject() {
|
while let key: AnyObject = enumerator.nextObject() {
|
||||||
let value: AnyObject = d.objectForKey(key)
|
let value: AnyObject = d.objectForKey(key)
|
||||||
pairs += ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
let kv = ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
||||||
|
pairs.append(kv)
|
||||||
}
|
}
|
||||||
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
||||||
|
|
||||||
@@ -3311,7 +3338,8 @@ func test_NSDictionaryToDictionaryCoversion() {
|
|||||||
|
|
||||||
var pairs = Array<(Int, Int)>()
|
var pairs = Array<(Int, Int)>()
|
||||||
for (key, value: AnyObject) in d {
|
for (key, value: AnyObject) in d {
|
||||||
pairs += ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
let kv = ((key as TestObjCKeyTy).value, (value as TestObjCValueTy).value)
|
||||||
|
pairs.append(kv)
|
||||||
}
|
}
|
||||||
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
assert(equalsUnordered(pairs, [ (10, 1010), (20, 1020), (30, 1030) ]))
|
||||||
|
|
||||||
|
|||||||
@@ -344,7 +344,7 @@ NSStringAPIs.test("enumerateLines(_:)") {
|
|||||||
"abc\n\ndefghi\njklm".enumerateLines {
|
"abc\n\ndefghi\njklm".enumerateLines {
|
||||||
(line: String, inout stop: Bool)
|
(line: String, inout stop: Bool)
|
||||||
in
|
in
|
||||||
lines += line
|
lines.append(line)
|
||||||
if lines.count == 3 {
|
if lines.count == 3 {
|
||||||
stop = true
|
stop = true
|
||||||
}
|
}
|
||||||
@@ -365,9 +365,9 @@ NSStringAPIs.test("enumerateLinguisticTagsInRange(_:scheme:options:orthography:_
|
|||||||
orthography: nil) {
|
orthography: nil) {
|
||||||
(tag: String, tokenRange: Range<String.Index>, sentenceRange: Range<String.Index>, inout stop: Bool)
|
(tag: String, tokenRange: Range<String.Index>, sentenceRange: Range<String.Index>, inout stop: Bool)
|
||||||
in
|
in
|
||||||
tags += tag
|
tags.append(tag)
|
||||||
tokens += s[tokenRange]
|
tokens.append(s[tokenRange])
|
||||||
sentences += s[sentenceRange]
|
sentences.append(s[sentenceRange])
|
||||||
if tags.count == 3 {
|
if tags.count == 3 {
|
||||||
stop = true
|
stop = true
|
||||||
}
|
}
|
||||||
@@ -391,7 +391,7 @@ NSStringAPIs.test("enumerateSubstringsInRange(_:options:_:)") {
|
|||||||
(substring: String, substringRange: Range<String.Index>,
|
(substring: String, substringRange: Range<String.Index>,
|
||||||
enclosingRange: Range<String.Index>, inout stop: Bool)
|
enclosingRange: Range<String.Index>, inout stop: Bool)
|
||||||
in
|
in
|
||||||
substrings += substring
|
substrings.append(substring)
|
||||||
expectEqual(substring, s[substringRange])
|
expectEqual(substring, s[substringRange])
|
||||||
expectEqual(substring, s[enclosingRange])
|
expectEqual(substring, s[enclosingRange])
|
||||||
}
|
}
|
||||||
@@ -426,7 +426,7 @@ NSStringAPIs.test("getBytes(_:maxLength:usedLength:encoding:options:range:remain
|
|||||||
let bufferLength = 100
|
let bufferLength = 100
|
||||||
var expectedStr: [UInt8] = Array("def где ".utf8)
|
var expectedStr: [UInt8] = Array("def где ".utf8)
|
||||||
while (expectedStr.count != bufferLength) {
|
while (expectedStr.count != bufferLength) {
|
||||||
expectedStr += 0xff
|
expectedStr.append(0xff)
|
||||||
}
|
}
|
||||||
var buffer = [UInt8](count: bufferLength, repeatedValue: 0xff)
|
var buffer = [UInt8](count: bufferLength, repeatedValue: 0xff)
|
||||||
var usedLength = 0
|
var usedLength = 0
|
||||||
@@ -447,7 +447,7 @@ NSStringAPIs.test("getBytes(_:maxLength:usedLength:encoding:options:range:remain
|
|||||||
let bufferLength = 5
|
let bufferLength = 5
|
||||||
var expectedStr: [UInt8] = Array("def ".utf8)
|
var expectedStr: [UInt8] = Array("def ".utf8)
|
||||||
while (expectedStr.count != bufferLength) {
|
while (expectedStr.count != bufferLength) {
|
||||||
expectedStr += 0xff
|
expectedStr.append(0xff)
|
||||||
}
|
}
|
||||||
var buffer = [UInt8](count: bufferLength, repeatedValue: 0xff)
|
var buffer = [UInt8](count: bufferLength, repeatedValue: 0xff)
|
||||||
var usedLength = 0
|
var usedLength = 0
|
||||||
@@ -467,7 +467,7 @@ NSStringAPIs.test("getBytes(_:maxLength:usedLength:encoding:options:range:remain
|
|||||||
let bufferLength = 100
|
let bufferLength = 100
|
||||||
var expectedStr: [UInt8] = Array("def где gh жз ".utf8)
|
var expectedStr: [UInt8] = Array("def где gh жз ".utf8)
|
||||||
while (expectedStr.count != bufferLength) {
|
while (expectedStr.count != bufferLength) {
|
||||||
expectedStr += 0xff
|
expectedStr.append(0xff)
|
||||||
}
|
}
|
||||||
var buffer = [UInt8](count: bufferLength, repeatedValue: 0xff)
|
var buffer = [UInt8](count: bufferLength, repeatedValue: 0xff)
|
||||||
var usedLength = 0
|
var usedLength = 0
|
||||||
@@ -487,7 +487,7 @@ NSStringAPIs.test("getBytes(_:maxLength:usedLength:encoding:options:range:remain
|
|||||||
let bufferLength = 100
|
let bufferLength = 100
|
||||||
var expectedStr: [UInt8] = Array("def ".utf8)
|
var expectedStr: [UInt8] = Array("def ".utf8)
|
||||||
while (expectedStr.count != bufferLength) {
|
while (expectedStr.count != bufferLength) {
|
||||||
expectedStr += 0xff
|
expectedStr.append(0xff)
|
||||||
}
|
}
|
||||||
var buffer = [UInt8](count: bufferLength, repeatedValue: 0xff)
|
var buffer = [UInt8](count: bufferLength, repeatedValue: 0xff)
|
||||||
var usedLength = 0
|
var usedLength = 0
|
||||||
@@ -517,7 +517,7 @@ NSStringAPIs.test("getCString(_:maxLength:encoding:)") {
|
|||||||
let bufferLength = 17
|
let bufferLength = 17
|
||||||
var expectedStr = map("abc あかさた\0".utf8) { $0.asSigned() }
|
var expectedStr = map("abc あかさた\0".utf8) { $0.asSigned() }
|
||||||
while (expectedStr.count != bufferLength) {
|
while (expectedStr.count != bufferLength) {
|
||||||
expectedStr += (0xff).asSigned()
|
expectedStr.append((0xff).asSigned())
|
||||||
}
|
}
|
||||||
var buffer = [CChar](count: bufferLength, repeatedValue: (0xff).asSigned())
|
var buffer = [CChar](count: bufferLength, repeatedValue: (0xff).asSigned())
|
||||||
var result = s.getCString(&buffer, maxLength: 100,
|
var result = s.getCString(&buffer, maxLength: 100,
|
||||||
@@ -548,7 +548,7 @@ NSStringAPIs.test("getFileSystemRepresentation(_:maxLength:)") {
|
|||||||
let bufferLength = 100
|
let bufferLength = 100
|
||||||
var expectedStr = map("abc \u{305f}\u{3099}くてん\0".utf8) { $0.asSigned() }
|
var expectedStr = map("abc \u{305f}\u{3099}くてん\0".utf8) { $0.asSigned() }
|
||||||
while (expectedStr.count != bufferLength) {
|
while (expectedStr.count != bufferLength) {
|
||||||
expectedStr += (0xff).asSigned()
|
expectedStr.append((0xff).asSigned())
|
||||||
}
|
}
|
||||||
var buffer = [CChar](count: bufferLength, repeatedValue: (0xff).asSigned())
|
var buffer = [CChar](count: bufferLength, repeatedValue: (0xff).asSigned())
|
||||||
expectTrue(s.getFileSystemRepresentation(&buffer, maxLength: bufferLength))
|
expectTrue(s.getFileSystemRepresentation(&buffer, maxLength: bufferLength))
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ where T.Generator.Element == T._Buffer.Element,
|
|||||||
|
|
||||||
for i in x.count..<(x.capacity + 1) {
|
for i in x.count..<(x.capacity + 1) {
|
||||||
let bufferId1a = checkReallocation(x, bufferId1, false)
|
let bufferId1a = checkReallocation(x, bufferId1, false)
|
||||||
x += 13
|
x.append(13)
|
||||||
}
|
}
|
||||||
let bufferId2 = checkReallocation(x, bufferId1, true)
|
let bufferId2 = checkReallocation(x, bufferId1, true)
|
||||||
|
|
||||||
@@ -157,7 +157,7 @@ where T.Generator.Element == T._Buffer.Element,
|
|||||||
}
|
}
|
||||||
|
|
||||||
checkReallocations(x, "append") { (inout x: T)->() in x.append(42) }
|
checkReallocations(x, "append") { (inout x: T)->() in x.append(42) }
|
||||||
checkReallocations(x, "+=") { (inout x: T)->() in x += 42 }
|
checkReallocations(x, "+=") { (inout x: T)->() in x.append(42) }
|
||||||
println("done.")
|
println("done.")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,7 +222,7 @@ func testCocoa() {
|
|||||||
printSequence(a)
|
printSequence(a)
|
||||||
// CHECK-NEXT: [foo, bar, baz]
|
// CHECK-NEXT: [foo, bar, baz]
|
||||||
|
|
||||||
a += "qux"
|
a.append("qux")
|
||||||
printSequence(a)
|
printSequence(a)
|
||||||
// CHECK-NEXT: [foo, bar, baz, qux]
|
// CHECK-NEXT: [foo, bar, baz, qux]
|
||||||
|
|
||||||
@@ -309,7 +309,7 @@ func testSlice() {
|
|||||||
printSequence(a) // CHECK-NEXT: [foo, bar, baz]
|
printSequence(a) // CHECK-NEXT: [foo, bar, baz]
|
||||||
|
|
||||||
// Appending to aSlice works...
|
// Appending to aSlice works...
|
||||||
aSlice += "fodder"
|
aSlice.append("fodder")
|
||||||
println("<\(aSlice.count)>") // CHECK-NEXT: <3>
|
println("<\(aSlice.count)>") // CHECK-NEXT: <3>
|
||||||
printSequence(aSlice) // CHECK-NEXT: [buzz, baz, fodder]
|
printSequence(aSlice) // CHECK-NEXT: [buzz, baz, fodder]
|
||||||
|
|
||||||
@@ -334,7 +334,7 @@ func testReplace(make: ()->${A}<X>) {
|
|||||||
// comparison later.
|
// comparison later.
|
||||||
var source = ContiguousArray<A.Generator.Element>()
|
var source = ContiguousArray<A.Generator.Element>()
|
||||||
for x in make() {
|
for x in make() {
|
||||||
source += x
|
source.append(x)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i in indices(source) {
|
for i in indices(source) {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ func checkUnicodeScalarViewIteration(
|
|||||||
var decoded: [UInt32] = []
|
var decoded: [UInt32] = []
|
||||||
while i != end {
|
while i != end {
|
||||||
expectTrue(i < i.successor()) // Check for Comparable conformance
|
expectTrue(i < i.successor()) // Check for Comparable conformance
|
||||||
decoded += us[i].value
|
decoded.append(us[i].value)
|
||||||
i = i.successor()
|
i = i.successor()
|
||||||
}
|
}
|
||||||
if expectedScalars != decoded {
|
if expectedScalars != decoded {
|
||||||
@@ -34,7 +34,7 @@ func checkUnicodeScalarViewIteration(
|
|||||||
var decoded: [UInt32] = []
|
var decoded: [UInt32] = []
|
||||||
while i != start {
|
while i != start {
|
||||||
i = i.predecessor()
|
i = i.predecessor()
|
||||||
decoded += us[i].value
|
decoded.append(us[i].value)
|
||||||
}
|
}
|
||||||
if expectedScalars != decoded {
|
if expectedScalars != decoded {
|
||||||
return assertionFailure()
|
return assertionFailure()
|
||||||
|
|||||||
@@ -329,7 +329,7 @@ func checkDecodeUTF<Codec : UnicodeCodecType>(
|
|||||||
var g = EOFCountingGenerator(utfStr)
|
var g = EOFCountingGenerator(utfStr)
|
||||||
transcode(codec, UTF32.self, g,
|
transcode(codec, UTF32.self, g,
|
||||||
SinkOf {
|
SinkOf {
|
||||||
decoded += $0
|
decoded.append($0)
|
||||||
},
|
},
|
||||||
stopOnError: true)
|
stopOnError: true)
|
||||||
expectGE(1, g.numTimesReturnedEOF)
|
expectGE(1, g.numTimesReturnedEOF)
|
||||||
@@ -349,7 +349,7 @@ func checkDecodeUTF<Codec : UnicodeCodecType>(
|
|||||||
var g = EOFCountingGenerator(utfStr)
|
var g = EOFCountingGenerator(utfStr)
|
||||||
transcode(codec, UTF32.self, g,
|
transcode(codec, UTF32.self, g,
|
||||||
SinkOf {
|
SinkOf {
|
||||||
decoded += $0
|
decoded.append($0)
|
||||||
},
|
},
|
||||||
stopOnError: false)
|
stopOnError: false)
|
||||||
expectEqual(1, g.numTimesReturnedEOF)
|
expectEqual(1, g.numTimesReturnedEOF)
|
||||||
@@ -392,7 +392,7 @@ func checkEncodeUTF8(expected: [UInt8], scalars: [UInt32]) -> AssertionResult {
|
|||||||
var g = EOFCountingGenerator(scalars)
|
var g = EOFCountingGenerator(scalars)
|
||||||
let hadError = transcode(UTF32.self, UTF8.self, g,
|
let hadError = transcode(UTF32.self, UTF8.self, g,
|
||||||
SinkOf {
|
SinkOf {
|
||||||
encoded += $0
|
encoded.append($0)
|
||||||
},
|
},
|
||||||
stopOnError: true)
|
stopOnError: true)
|
||||||
expectFalse(hadError)
|
expectFalse(hadError)
|
||||||
@@ -2261,7 +2261,7 @@ class NonContiguousNSString : NSString {
|
|||||||
var g = utf8.generate()
|
var g = utf8.generate()
|
||||||
let hadError = transcode(UTF8.self, UTF16.self, g,
|
let hadError = transcode(UTF8.self, UTF16.self, g,
|
||||||
SinkOf {
|
SinkOf {
|
||||||
encoded += $0
|
encoded.append($0)
|
||||||
},
|
},
|
||||||
stopOnError: true)
|
stopOnError: true)
|
||||||
expectFalse(hadError)
|
expectFalse(hadError)
|
||||||
@@ -2278,7 +2278,7 @@ class NonContiguousNSString : NSString {
|
|||||||
var g = scalars.generate()
|
var g = scalars.generate()
|
||||||
let hadError = transcode(UTF32.self, UTF16.self, g,
|
let hadError = transcode(UTF32.self, UTF16.self, g,
|
||||||
SinkOf {
|
SinkOf {
|
||||||
encoded += $0
|
encoded.append($0)
|
||||||
},
|
},
|
||||||
stopOnError: true)
|
stopOnError: true)
|
||||||
expectFalse(hadError)
|
expectFalse(hadError)
|
||||||
@@ -2337,7 +2337,7 @@ StringCookedViews.test("UTF8ForContiguousUTF16") {
|
|||||||
var g = test.scalars.generate()
|
var g = test.scalars.generate()
|
||||||
transcode(UTF32.self, UTF16.self, g,
|
transcode(UTF32.self, UTF16.self, g,
|
||||||
SinkOf {
|
SinkOf {
|
||||||
backingStorage += $0
|
backingStorage.append($0)
|
||||||
},
|
},
|
||||||
stopOnError: false)
|
stopOnError: false)
|
||||||
|
|
||||||
@@ -2360,7 +2360,7 @@ StringCookedViews.test("UTF8ForContiguousUTF16") {
|
|||||||
var g = expectedScalars.generate()
|
var g = expectedScalars.generate()
|
||||||
transcode(UTF32.self, UTF8.self, g,
|
transcode(UTF32.self, UTF8.self, g,
|
||||||
SinkOf {
|
SinkOf {
|
||||||
expected += $0
|
expected.append($0)
|
||||||
},
|
},
|
||||||
stopOnError: false)
|
stopOnError: false)
|
||||||
|
|
||||||
@@ -2409,7 +2409,7 @@ StringCookedViews.test("UTF8ForNonContiguousUTF16") {
|
|||||||
var g = expectedScalars.generate()
|
var g = expectedScalars.generate()
|
||||||
transcode(UTF32.self, UTF8.self, g,
|
transcode(UTF32.self, UTF8.self, g,
|
||||||
SinkOf {
|
SinkOf {
|
||||||
expected += $0
|
expected.append($0)
|
||||||
},
|
},
|
||||||
stopOnError: false)
|
stopOnError: false)
|
||||||
|
|
||||||
@@ -2475,7 +2475,7 @@ StringCookedViews.test("UTF16") {
|
|||||||
var g = expectedScalars.generate()
|
var g = expectedScalars.generate()
|
||||||
transcode(UTF32.self, UTF16.self, g,
|
transcode(UTF32.self, UTF16.self, g,
|
||||||
SinkOf {
|
SinkOf {
|
||||||
expected += $0
|
expected.append($0)
|
||||||
},
|
},
|
||||||
stopOnError: false)
|
stopOnError: false)
|
||||||
|
|
||||||
@@ -2490,7 +2490,7 @@ StringCookedViews.test("UTF16") {
|
|||||||
var g = expectedScalars.generate()
|
var g = expectedScalars.generate()
|
||||||
transcode(UTF32.self, UTF16.self, g,
|
transcode(UTF32.self, UTF16.self, g,
|
||||||
SinkOf {
|
SinkOf {
|
||||||
expected += $0
|
expected.append($0)
|
||||||
},
|
},
|
||||||
stopOnError: false)
|
stopOnError: false)
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ class NonContiguousNSString : NSString {
|
|||||||
var g = scalars.generate()
|
var g = scalars.generate()
|
||||||
let hadError = transcode(UTF32.self, UTF16.self, g,
|
let hadError = transcode(UTF32.self, UTF16.self, g,
|
||||||
SinkOf {
|
SinkOf {
|
||||||
encoded += $0
|
encoded.append($0)
|
||||||
},
|
},
|
||||||
stopOnError: true)
|
stopOnError: true)
|
||||||
expectFalse(hadError)
|
expectFalse(hadError)
|
||||||
|
|||||||
Reference in New Issue
Block a user