Skip to content

Commit 66f7ef1

Browse files
committed
Move stdlib off ++ and --
1 parent d5dba4e commit 66f7ef1

13 files changed

+57
-39
lines changed

stdlib/public/core/Algorithm.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,8 @@ public struct EnumerateGenerator<
168168
/// - Requires: No preceding call to `self.next()` has returned `nil`.
169169
public mutating func next() -> Element? {
170170
guard let b = base.next() else { return nil }
171-
return (index: count++, element: b)
171+
defer { count += 1 }
172+
return (index: count, element: b)
172173
}
173174
}
174175

stdlib/public/core/Arrays.swift.gyb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1241,7 +1241,8 @@ internal func _arrayAppendSequence<
12411241
let base = buffer.firstElementAddress
12421242

12431243
while (nextItem != nil) && count < capacity {
1244-
(base + count++).initialize(nextItem!)
1244+
(base + count).initialize(nextItem!)
1245+
count += 1
12451246
nextItem = stream.next()
12461247
}
12471248
buffer.count = count

stdlib/public/core/CString.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public func _persistCString(s: UnsafePointer<CChar>) -> [CChar]? {
6060
}
6161
let length = Int(_swift_stdlib_strlen(s))
6262
var result = [CChar](count: length + 1, repeatedValue: 0)
63-
for var i = 0; i < length; ++i {
63+
for var i = 0; i < length; i += 1 {
6464
// FIXME: this will not compile on platforms where 'CChar' is unsigned.
6565
result[i] = s[i]
6666
}

stdlib/public/core/Character.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ public struct Character :
120120
@warn_unused_result
121121
static func _smallSize(value: UInt64) -> Int {
122122
var mask: UInt64 = 0xFF
123-
for var i = 0; i < 8; ++i {
123+
for var i = 0; i < 8; i += 1 {
124124
if (value & mask) == mask {
125125
return i
126126
}

stdlib/public/core/Flatten.swift.gyb

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,11 +144,18 @@ public struct ${Index}<
144144
/// - Requires: The previous value is representable.
145145
public func predecessor() -> ${Index} {
146146
var prevOuter = _outer
147-
var prevInnerCollection = _innerCollection ?? _base[--prevOuter]
147+
var prevInnerCollection : BaseElements.Generator.Element
148+
if let ic = _innerCollection {
149+
prevInnerCollection = ic
150+
} else {
151+
prevOuter._predecessorInPlace()
152+
prevInnerCollection = _base[prevOuter]
153+
}
148154
var prevInner = _inner ?? prevInnerCollection.endIndex
149155

150156
while prevInner == prevInnerCollection.startIndex {
151-
prevInnerCollection = _base[--prevOuter]
157+
prevOuter._predecessorInPlace()
158+
prevInnerCollection = _base[prevOuter]
152159
prevInner = prevInnerCollection.endIndex
153160
}
154161

stdlib/public/core/HashedCollections.swift.gyb

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2113,7 +2113,7 @@ struct _Native${Self}Storage<${TypeParametersDecl}> :
21132113
var description: String {
21142114
var result = ""
21152115
#if INTERNAL_CHECKS_ENABLED
2116-
for var i = 0; i != capacity; ++i {
2116+
for var i = 0; i != capacity; i += 1 {
21172117
if isInitializedEntry(i) {
21182118
let key = keyAt(i)
21192119
result += "bucket \(i), ideal bucket = \(_bucket(key)), key = \(key)\n"
@@ -2231,7 +2231,7 @@ struct _Native${Self}Storage<${TypeParametersDecl}> :
22312231
continue
22322232
}
22332233
nativeStorage.initializeKey(key, at: i.offset)
2234-
++count
2234+
count += 1
22352235
}
22362236
nativeStorage.count = count
22372237

@@ -2601,7 +2601,7 @@ final internal class _Native${Self}StorageOwner<${TypeParametersDecl}>
26012601
let bridged = _createBridgedNativeStorage(nativeStorage.capacity)
26022602

26032603
// Bridge everything.
2604-
for var i = 0; i < nativeStorage.capacity; ++i {
2604+
for var i = 0; i < nativeStorage.capacity; i += 1 {
26052605
if nativeStorage.isInitializedEntry(i) {
26062606
let key = _bridgeToObjectiveCUnconditional(nativeStorage.keyAt(i))
26072607
%if Self == 'Set':
@@ -2684,9 +2684,9 @@ final internal class _Native${Self}StorageOwner<${TypeParametersDecl}>
26842684
while position < count {
26852685
if bridgedNativeStorage.isInitializedEntry(position) {
26862686
unmanagedObjects[i] = bridgedNativeStorage.valueAt(position)
2687-
i++
2687+
i += 1
26882688
}
2689-
position++
2689+
position += 1
26902690
}
26912691
}
26922692
} else {
@@ -2695,19 +2695,19 @@ final internal class _Native${Self}StorageOwner<${TypeParametersDecl}>
26952695
while position < count {
26962696
if bridgedNativeStorage.isInitializedEntry(position) {
26972697
unmanagedKeys[i] = bridgedNativeStorage.keyAt(position)
2698-
i++
2698+
i += 1
26992699
}
2700-
position++
2700+
position += 1
27012701
}
27022702
} else {
27032703
// keys nonnull, objects nonnull
27042704
while position < count {
27052705
if bridgedNativeStorage.isInitializedEntry(position) {
27062706
unmanagedObjects[i] = bridgedNativeStorage.valueAt(position)
27072707
unmanagedKeys[i] = bridgedNativeStorage.keyAt(position)
2708-
i++
2708+
i += 1
27092709
}
2710-
position++
2710+
position += 1
27112711
}
27122712
}
27132713
}
@@ -2766,7 +2766,7 @@ final internal class _Native${Self}StorageOwner<${TypeParametersDecl}>
27662766

27672767
let bridgedKey: AnyObject = _getBridgedKey(currIndex)
27682768
unmanagedObjects[i] = bridgedKey
2769-
++stored
2769+
stored += 1
27702770
currIndex._successorInPlace()
27712771
}
27722772
theState.extra.0 = CUnsignedLong(currIndex.offset)
@@ -3187,15 +3187,15 @@ internal enum _Variant${Self}Storage<${TypeParametersDecl}> : _HashStorageType {
31873187
native.setKey(key, at: i.offset)
31883188
} else {
31893189
native.initializeKey(key, at: i.offset)
3190-
++native.count
3190+
native.count += 1
31913191
}
31923192
%elif Self == 'Dictionary':
31933193
let oldValue: Value? = found ? native.valueAt(i.offset) : nil
31943194
if found {
31953195
native.setKey(key, value: value, at: i.offset)
31963196
} else {
31973197
native.initializeKey(key, value: value, at: i.offset)
3198-
++native.count
3198+
native.count += 1
31993199
}
32003200
%end
32013201

@@ -3234,7 +3234,7 @@ internal enum _Variant${Self}Storage<${TypeParametersDecl}> : _HashStorageType {
32343234

32353235
// remove the element
32363236
nativeStorage.destroyEntryAt(offset)
3237-
--nativeStorage.count
3237+
nativeStorage.count -= 1
32383238

32393239
// If we've put a hole in a chain of contiguous elements, some
32403240
// element after the hole may belong where the new hole is.
@@ -3409,7 +3409,7 @@ internal enum _Variant${Self}Storage<${TypeParametersDecl}> : _HashStorageType {
34093409
nativeStorage = native
34103410
}
34113411

3412-
for var b = 0; b != nativeStorage.capacity; ++b {
3412+
for var b = 0; b != nativeStorage.capacity; b += 1 {
34133413
if nativeStorage.isInitializedEntry(b) {
34143414
nativeStorage.destroyEntryAt(b)
34153415
}
@@ -3510,7 +3510,7 @@ internal struct _Native${Self}Index<${TypeParametersDecl}> :
35103510
break
35113511
}
35123512
// end workaround
3513-
++i
3513+
i += 1
35143514
}
35153515
return NativeIndex(nativeStorage: nativeStorage, offset: i)
35163516
}
@@ -3832,7 +3832,7 @@ final internal class _Cocoa${Self}Generator : GeneratorType {
38323832
UnsafeMutablePointer(_fastEnumerationState.itemsPtr)
38333833
let itemsPtr = _UnmanagedAnyObjectArray(itemsPtrUP)
38343834
let key: AnyObject = itemsPtr[itemIndex]
3835-
++itemIndex
3835+
itemIndex += 1
38363836
%if Self == 'Set':
38373837
return key
38383838
%elif Self == 'Dictionary':
@@ -4094,7 +4094,7 @@ public struct _${Self}Builder<${TypeParametersDecl}> {
40944094
public mutating func add(key newKey: Key, value: Value) {
40954095
_nativeStorage.unsafeAddNew(key: newKey, value: value)
40964096
%end
4097-
_actualCount++
4097+
_actualCount += 1
40984098
}
40994099

41004100
@warn_unused_result

stdlib/public/core/Prespecialized.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ struct _Prespecialize {
2929
a[0] = a[j]
3030
}
3131

32-
for var i1 = 0; i1 < a.count; ++i1 {
33-
for var i2 = 0; i2 < a.count; ++i2 {
32+
for var i1 = 0; i1 < a.count; i1 += 1 {
33+
for var i2 = 0; i2 < a.count; i2 += 1 {
3434
a[i1] = a[i2]
3535
}
3636
}

stdlib/public/core/Sort.swift.gyb

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ func _insertionSort<
7474

7575
// Move y forward
7676
elements[i] = predecessor
77-
}
78-
while --i != start
77+
i._predecessorInPlace()
78+
} while i != start
7979

8080
if i != sortedEnd {
8181
// Plop x into position
@@ -141,16 +141,18 @@ Loop: while true {
141141
} while false
142142

143143
FindHi: repeat {
144-
while --hi != lo {
144+
hi._predecessorInPlace()
145+
while hi != lo {
145146
if ${cmp("elements[hi]", "pivot", p)} { break FindHi }
147+
hi._predecessorInPlace()
146148
}
147149
break Loop
148150
} while false
149151

150152
swap(&elements[lo], &elements[hi])
151153
}
152154

153-
--lo
155+
lo._predecessorInPlace()
154156
if lo != range.startIndex {
155157
// swap the pivot into place
156158
swap(&elements[lo], &elements[range.startIndex])
@@ -263,7 +265,8 @@ func _heapify<
263265
// any children.
264266
let root = range.startIndex
265267
var node = root.advancedBy(C.Index.Distance(range.count.toIntMax()/2))
266-
while node-- != root {
268+
while node != root {
269+
node._predecessorInPlace()
267270
_siftDown(&elements, node, range ${", &isOrderedBefore" if p else ""})
268271
}
269272
}
@@ -278,9 +281,11 @@ func _heapSort<
278281
var hi = range.endIndex
279282
let lo = range.startIndex
280283
_heapify(&elements, range ${", &isOrderedBefore" if p else ""})
281-
while --hi != lo {
284+
hi._predecessorInPlace()
285+
while hi != lo {
282286
swap(&elements[lo], &elements[hi])
283287
_siftDown(&elements, lo, lo..<hi ${", &isOrderedBefore" if p else ""})
288+
hi._predecessorInPlace()
284289
}
285290
}
286291

stdlib/public/core/String.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ extension String {
272272
Encoding: UnicodeCodecType
273273
>(encoding: Encoding.Type) -> Int {
274274
var codeUnitCount = 0
275-
let output: (Encoding.CodeUnit) -> Void = { _ in ++codeUnitCount }
275+
let output: (Encoding.CodeUnit) -> Void = { _ in codeUnitCount += 1 }
276276
self._encode(encoding, output: output)
277277
return codeUnitCount
278278
}

stdlib/public/core/StringCharacterView.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,14 +182,14 @@ extension String.CharacterView : CollectionType {
182182

183183
var graphemeClusterStart = end
184184

185-
--graphemeClusterStart
185+
graphemeClusterStart._predecessorInPlace()
186186
var gcb0 = graphemeClusterBreakProperty.getPropertyRawValue(
187187
unicodeScalars[graphemeClusterStart].value)
188188

189189
var graphemeClusterStartUTF16 = graphemeClusterStart._position
190190

191191
while graphemeClusterStart != start {
192-
--graphemeClusterStart
192+
graphemeClusterStart._predecessorInPlace()
193193
let gcb1 = graphemeClusterBreakProperty.getPropertyRawValue(
194194
unicodeScalars[graphemeClusterStart].value)
195195
if segmenter.isBoundary(gcb1, gcb0) {

stdlib/public/core/StringUnicodeScalarView.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ extension String {
4646
if idx == core.endIndex {
4747
return nil
4848
}
49-
return self.core[idx++]
49+
defer { idx += 1 }
50+
return self.core[idx]
5051
}
5152
}
5253

@@ -73,8 +74,8 @@ extension String {
7374
/// - Requires: The previous value is representable.
7475
@warn_unused_result
7576
public func predecessor() -> Index {
76-
var i = _position
77-
let codeUnit = _core[--i]
77+
var i = _position-1
78+
let codeUnit = _core[i]
7879
if _slowPath((codeUnit >> 10) == 0b1101_11) {
7980
if i != 0 && (_core[i - 1] >> 10) == 0b1101_10 {
8081
i -= 1

stdlib/public/core/UnsafePointer.swift.gyb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,10 @@ ${comment}
210210
_debugPrecondition(
211211
source < self || source >= self + count,
212212
"${Self}.assignBackwardFrom non-preceding overlapping range; use assignFrom instead")
213-
for var i = count; --i >= 0; {
213+
var i = count-1
214+
while i >= 0 {
214215
self[i] = source[i]
216+
i -= 1
215217
}
216218
}
217219

stdlib/public/core/VarArgs.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,8 @@ final public class VaListBuilder {
403403
sseRegistersUsed += 1
404404
}
405405
else if encoded.count == 1 && gpRegistersUsed < _x86_64CountGPRegisters {
406-
storage[gpRegistersUsed++] = encoded[0]
406+
storage[gpRegistersUsed] = encoded[0]
407+
gpRegistersUsed += 1
407408
}
408409
else {
409410
for w in encoded {

0 commit comments

Comments
 (0)