Skip to content

Commit 2c8e6b1

Browse files
committed
Revert "House mutations in local scope"
This reverts commit d91f1b25b59fff8e4be107c808895ff3f293b394.
1 parent 3faaf3c commit 2c8e6b1

File tree

6 files changed

+38
-128
lines changed

6 files changed

+38
-128
lines changed

stdlib/public/Concurrency/AsyncCompactMapSequence.swift

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,7 @@ public struct AsyncCompactMapSequence<Upstream, ElementOfResult>: AsyncSequence
3737

3838
public mutating func next() async rethrows -> ElementOfResult? {
3939
while true {
40-
guard var upstreamIterator = self.upstreamIterator else {
41-
return nil
42-
}
43-
defer { self.upstreamIterator = upstreamIterator }
44-
45-
guard let item = try await upstreamIterator.next() else {
40+
guard let item = try await upstreamIterator?.next() else {
4641
return nil
4742
}
4843
if let transformed = await transform(item) {
@@ -85,22 +80,16 @@ public struct AsyncTryCompactMapSequence<Upstream, ElementOfResult>: AsyncSequen
8580

8681
public mutating func next() async throws -> ElementOfResult? {
8782
while true {
88-
guard var upstreamIterator = self.upstreamIterator else {
89-
return nil
90-
}
91-
92-
guard let item = try await upstreamIterator.next() else {
83+
guard let item = try await upstreamIterator?.next() else {
9384
return nil
9485
}
9586
do {
9687
if let transformed = try await transform(item) {
97-
self.upstreamIterator = upstreamIterator
9888
return transformed
9989
}
100-
self.upstreamIterator = upstreamIterator
10190
} catch {
102-
upstreamIterator.cancel()
103-
self.upstreamIterator = nil
91+
upstreamIterator?.cancel()
92+
upstreamIterator = nil
10493
throw error
10594
}
10695
}

stdlib/public/Concurrency/AsyncDropWhileSequence.swift

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,7 @@ public struct AsyncDropWhileSequence<Upstream>: AsyncSequence where Upstream: As
3737

3838
public mutating func next() async rethrows -> Upstream.Element? {
3939
while true {
40-
guard var upstreamIterator = self.upstreamIterator else {
41-
return nil
42-
}
43-
defer { self.upstreamIterator = upstreamIterator }
44-
45-
guard let item = try await upstreamIterator.next() else {
40+
guard let item = try await upstreamIterator?.next() else {
4641
return nil
4742
}
4843
if let predicate = self.predicate {
@@ -90,29 +85,21 @@ public struct AsyncTryDropWhileSequence<Upstream>: AsyncSequence where Upstream:
9085

9186
public mutating func next() async throws -> Upstream.Element? {
9287
while true {
93-
guard var upstreamIterator = self.upstreamIterator else {
94-
return nil
95-
}
96-
97-
guard let item = try await upstreamIterator.next() else {
98-
self.upstreamIterator = upstreamIterator
88+
guard let item = try await upstreamIterator?.next() else {
9989
return nil
10090
}
10191
if let predicate = self.predicate {
10292
do {
10393
if !(try await predicate(item)) {
10494
self.predicate = nil
105-
self.upstreamIterator = upstreamIterator
10695
return item
10796
}
108-
self.upstreamIterator = upstreamIterator
10997
} catch {
110-
upstreamIterator.cancel()
111-
self.upstreamIterator = nil
98+
upstreamIterator?.cancel()
99+
upstreamIterator = nil
112100
throw error
113101
}
114102
} else {
115-
self.upstreamIterator = upstreamIterator
116103
return item
117104
}
118105
}

stdlib/public/Concurrency/AsyncFilterSequence.swift

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,14 @@ public struct AsyncFilterSequence<Upstream>: AsyncSequence where Upstream: Async
4141
}
4242

4343
public mutating func next() async rethrows -> Upstream.Element? {
44-
guard var upstreamIterator = self.upstreamIterator else {
45-
return nil
46-
}
47-
48-
guard let item = try await upstreamIterator.next() else {
49-
self.upstreamIterator = upstreamIterator
44+
guard let item = try await upstreamIterator?.next() else {
5045
return nil
5146
}
5247
guard await predicate(item) else {
53-
upstreamIterator.cancel()
54-
self.upstreamIterator = nil
55-
return nil
48+
upstreamIterator?.cancel()
49+
upstreamIterator = nil
50+
return nil
5651
}
57-
self.upstreamIterator = upstreamIterator
5852
return item
5953
}
6054

@@ -93,19 +87,14 @@ public struct AsyncTryFilterSequence<Upstream>: AsyncSequence where Upstream: As
9387
}
9488

9589
public mutating func next() async throws -> Upstream.Element? {
96-
guard var upstreamIterator = self.upstreamIterator else {
97-
return nil
98-
}
99-
100-
guard let item = try await upstreamIterator.next() else {
90+
guard let item = try await upstreamIterator?.next() else {
10191
return nil
10292
}
10393
guard try await predicate(item) else {
104-
upstreamIterator.cancel()
105-
self.upstreamIterator = nil
106-
return nil
94+
upstreamIterator?.cancel()
95+
upstreamIterator = nil
96+
return nil
10797
}
108-
self.upstreamIterator = upstreamIterator
10998
return item
11099
}
111100

stdlib/public/Concurrency/AsyncFlatMapSequence.swift

Lines changed: 14 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -35,34 +35,17 @@ public struct AsyncFlatMapSequence<Upstream, SegmentOfResult: AsyncSequence>: As
3535
self.upstreamIterator = upstreamIterator
3636
self.transform = transform
3737
}
38-
39-
mutating func nextUpstream() async rethrows -> SegmentOfResult.Element? {
40-
guard var upstreamIterator = self.upstreamIterator else {
41-
return nil
42-
}
43-
44-
guard let item = try await upstreamIterator.next() else {
45-
self.upstreamIterator = upstreamIterator
46-
return nil
47-
}
48-
let segment = await transform(item)
49-
var currentIterator = segment.makeAsyncIterator()
50-
self.currentIterator = currentIterator
51-
self.upstreamIterator = upstreamIterator
52-
return try await currentIterator.next()
53-
}
5438

5539
public mutating func next() async rethrows -> SegmentOfResult.Element? {
56-
guard var currentIterator = self.currentIterator else {
57-
return try await nextUpstream()
58-
}
59-
60-
if let item = try await currentIterator.next() {
61-
self.currentIterator = currentIterator
40+
if let item = try await currentIterator?.next() {
6241
return item
6342
} else {
64-
self.currentIterator = currentIterator
65-
return try await nextUpstream()
43+
guard let item = try await upstreamIterator?.next() else {
44+
return nil
45+
}
46+
let segment = await transform(item)
47+
currentIterator = segment.makeAsyncIterator()
48+
return try await currentIterator?.next()
6649
}
6750
}
6851

@@ -100,34 +83,17 @@ public struct AsyncTryFlatMapSequence<Upstream, SegmentOfResult: AsyncSequence>:
10083
self.upstreamIterator = upstreamIterator
10184
self.transform = transform
10285
}
103-
104-
mutating func nextUpstream() async throws -> SegmentOfResult.Element? {
105-
guard var upstreamIterator = self.upstreamIterator else {
106-
return nil
107-
}
108-
109-
guard let item = try await upstreamIterator.next() else {
110-
self.upstreamIterator = upstreamIterator
111-
return nil
112-
}
113-
let segment = try await transform(item)
114-
var currentIterator = segment.makeAsyncIterator()
115-
self.currentIterator = currentIterator
116-
self.upstreamIterator = upstreamIterator
117-
return try await currentIterator.next()
118-
}
11986

12087
public mutating func next() async throws -> SegmentOfResult.Element? {
121-
guard var currentIterator = self.currentIterator else {
122-
return try await nextUpstream()
123-
}
124-
125-
if let item = try await currentIterator.next() {
126-
self.currentIterator = currentIterator
88+
if let item = try await currentIterator?.next() {
12789
return item
12890
} else {
129-
self.currentIterator = currentIterator
130-
return try await nextUpstream()
91+
guard let item = try await upstreamIterator?.next() else {
92+
return nil
93+
}
94+
let segment = try await transform(item)
95+
currentIterator = segment.makeAsyncIterator()
96+
return try await currentIterator?.next()
13197
}
13298
}
13399

stdlib/public/Concurrency/AsyncMapSequence.swift

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,7 @@ public struct AsyncMapSequence<Upstream, Transformed>: AsyncSequence where Upstr
3838
}
3939

4040
public mutating func next() async rethrows -> Transformed? {
41-
guard var upstreamIterator = self.upstreamIterator else {
42-
return nil
43-
}
44-
defer { self.upstreamIterator = upstreamIterator }
45-
46-
guard let item = try await upstreamIterator.next() else {
41+
guard let item = try await upstreamIterator?.next() else {
4742
return nil
4843
}
4944
return await transform(item)
@@ -84,12 +79,7 @@ public struct AsyncTryMapSequence<Upstream, Transformed>: AsyncSequence where Up
8479
}
8580

8681
public mutating func next() async throws -> Transformed? {
87-
guard var upstreamIterator = self.upstreamIterator else {
88-
return nil
89-
}
90-
defer { self.upstreamIterator = upstreamIterator }
91-
92-
guard let item = try await upstreamIterator.next() else {
82+
guard let item = try await upstreamIterator?.next() else {
9383
return nil
9484
}
9585
return try await transform(item)

stdlib/public/Concurrency/AsyncPrefixWhileSequence.swift

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,14 @@ public struct AsyncPrefixWhileSequence<Upstream>: AsyncSequence where Upstream:
3636
}
3737

3838
public mutating func next() async rethrows -> Element? {
39-
guard var upstreamIterator = self.upstreamIterator else {
40-
return nil
41-
}
42-
43-
guard let item = try await upstreamIterator.next() else {
39+
guard let item = try await upstreamIterator?.next() else {
4440
return nil
4541
}
4642
guard await predicate(item) else {
47-
upstreamIterator.cancel()
48-
self.upstreamIterator = nil
43+
upstreamIterator?.cancel()
44+
upstreamIterator = nil
4945
return nil
5046
}
51-
self.upstreamIterator = upstreamIterator
5247
return item
5348
}
5449

@@ -85,20 +80,14 @@ public struct AsyncTryPrefixWhileSequence<Upstream>: AsyncSequence where Upstrea
8580
}
8681

8782
public mutating func next() async throws -> Element? {
88-
guard var upstreamIterator = self.upstreamIterator else {
89-
return nil
90-
}
91-
92-
guard let item = try await upstreamIterator.next() else {
93-
self.upstreamIterator = upstreamIterator
83+
guard let item = try await upstreamIterator?.next() else {
9484
return nil
9585
}
9686
guard try await predicate(item) else {
97-
upstreamIterator.cancel()
98-
self.upstreamIterator = nil
87+
upstreamIterator?.cancel()
88+
upstreamIterator = nil
9989
return nil
10090
}
101-
self.upstreamIterator = upstreamIterator
10291
return item
10392
}
10493

0 commit comments

Comments
 (0)