[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:
Dave Abrahams
2014-07-21 20:07:13 +00:00
parent 38e097c4f6
commit 079b5e57ef
10 changed files with 84 additions and 63 deletions

View File

@@ -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

View File

@@ -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 --------------------------------------------------===//

View File

@@ -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
} }
} }

View File

@@ -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
} }

View File

@@ -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) ]))

View File

@@ -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))

View File

@@ -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) {

View File

@@ -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()

View File

@@ -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)

View File

@@ -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)