Skip to content

Commit 8866f61

Browse files
committed
Merge pull request #2542 from apple/stdlib-check-iterator-next-repeatedly-returns-nil
2 parents bebe750 + b7984be commit 8866f61

File tree

4 files changed

+19
-70
lines changed

4 files changed

+19
-70
lines changed

stdlib/private/StdlibCollectionUnittest/CheckCollectionInstance.swift.gyb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ public struct CollectionMisuseResiliencyChecks {
2323
case trap
2424
}
2525

26-
public var callNextOnExhaustedGenerator: Bool = true
2726
public var creatingOutOfBoundsIndicesBehavior: FailureKind = .trap
2827
public var subscriptOnOutOfBoundsIndicesBehavior: FailureKind = .trap
2928
public var subscriptRangeOnOutOfBoundsRangesBehavior: FailureKind = .trap
@@ -34,7 +33,6 @@ public struct CollectionMisuseResiliencyChecks {
3433

3534
public static var none: CollectionMisuseResiliencyChecks {
3635
return CollectionMisuseResiliencyChecks(
37-
callNextOnExhaustedGenerator: false,
3836
creatingOutOfBoundsIndicesBehavior: .none,
3937
subscriptOnOutOfBoundsIndicesBehavior: .none,
4038
subscriptRangeOnOutOfBoundsRangesBehavior: .none)

stdlib/private/StdlibCollectionUnittest/CheckSequenceInstance.swift.gyb

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,10 @@ public func checkIterator<
4343
expectEqualSequence(
4444
expected, actual, ${trace}, sameValue: sameValue)
4545

46-
if resiliencyChecks.callNextOnExhaustedGenerator {
47-
// Having returned `.None` once, a `IteratorProtocol` should not generate more
48-
// elements.
49-
for _ in 0..<10 {
50-
expectEmpty(mutableGen.next(), ${trace})
51-
}
46+
// Having returned `.None` once, a `IteratorProtocol` should not generate
47+
// more elements.
48+
for _ in 0..<10 {
49+
expectEmpty(mutableGen.next(), ${trace})
5250
}
5351
}
5452

validation-test/stdlib/Collection/LazyFilterCollection.swift.gyb

Lines changed: 9 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -63,65 +63,44 @@ CollectionTests.add${traversal}${kind}Tests(
6363
% for (traversal, kind) in variations:
6464
CollectionTests.test("LazyFilterCollection instances (${traversal}${kind})") {
6565
do {
66-
// MinimalIterator will error if next() is called after exhaustion
67-
var resiliency = CollectionMisuseResiliencyChecks.all
68-
resiliency.callNextOnExhaustedGenerator = false
69-
7066
let expected : [String] = []
7167
let base = ["apple", "orange", "banana", "grapefruit", "lychee"]
7268
% if kind == 'Sequence':
7369
checkSequence(
7470
expected,
75-
MinimalSequence(elements: base).lazy.filter { _ in return false },
76-
resiliencyChecks: resiliency
77-
)
71+
MinimalSequence(elements: base).lazy.filter { _ in return false })
7872
% elif traversal == '' and kind == 'Collection':
7973
checkForwardCollection(
8074
expected,
8175
MinimalCollection(elements: base).lazy.filter { _ in return false },
82-
resiliencyChecks: resiliency,
83-
sameValue: { $0 == $1 }
84-
)
76+
sameValue: { $0 == $1 })
8577
% else:
8678
check${traversal}${kind}(
8779
expected,
8880
Minimal${traversal}${kind}(elements: base).lazy.filter { _ in return false },
89-
resiliencyChecks: resiliency,
90-
sameValue: { $0 == $1 }
91-
)
81+
sameValue: { $0 == $1 })
9282
% end
9383
}
9484
do {
95-
var resiliency = CollectionMisuseResiliencyChecks.all
96-
resiliency.callNextOnExhaustedGenerator = false
97-
9885
let expected = ["apple", "orange", "banana", "grapefruit", "lychee"]
9986
let base = ["apple", "orange", "banana", "grapefruit", "lychee"]
10087
% if kind == 'Sequence':
10188
checkSequence(
10289
expected,
103-
MinimalSequence(elements: base).lazy.filter { _ in return true },
104-
resiliencyChecks: resiliency
105-
)
90+
MinimalSequence(elements: base).lazy.filter { _ in return true })
10691
% elif traversal == '' and kind == 'Collection':
10792
checkForwardCollection(
10893
expected,
10994
MinimalCollection(elements: base).lazy.filter { _ in return true },
110-
resiliencyChecks: resiliency,
111-
sameValue: { $0 == $1 }
112-
)
95+
sameValue: { $0 == $1 })
11396
% else:
11497
check${traversal}${kind}(
11598
expected,
11699
Minimal${traversal}${kind}(elements: base).lazy.filter { _ in return true },
117-
resiliencyChecks: resiliency,
118-
sameValue: { $0 == $1 }
119-
)
100+
sameValue: { $0 == $1 })
120101
% end
121102
}
122103
do {
123-
var resiliency = CollectionMisuseResiliencyChecks.all
124-
resiliency.callNextOnExhaustedGenerator = false
125104
let predicate: Int -> Bool = { $0 % 3 == 0 || $0 % 5 == 0 }
126105

127106
let base = randArray(500)
@@ -133,23 +112,17 @@ CollectionTests.test("LazyFilterCollection instances (${traversal}${kind})") {
133112
% if kind == 'Sequence':
134113
checkSequence(
135114
expected,
136-
MinimalSequence(elements: base).lazy.filter(predicate),
137-
resiliencyChecks: resiliency
138-
)
115+
MinimalSequence(elements: base).lazy.filter(predicate))
139116
% elif traversal == '' and kind == 'Collection':
140117
checkForwardCollection(
141118
expected,
142119
MinimalCollection(elements: base).lazy.filter(predicate),
143-
resiliencyChecks: resiliency,
144-
sameValue: { $0 == $1 }
145-
)
120+
sameValue: { $0 == $1 })
146121
% else:
147122
check${traversal}${kind}(
148123
expected,
149124
Minimal${traversal}${kind}(elements: base).lazy.filter(predicate),
150-
resiliencyChecks: resiliency,
151-
sameValue: { $0 == $1 }
152-
)
125+
sameValue: { $0 == $1 })
153126
% end
154127
}
155128
}

validation-test/stdlib/Collection/LazyMapCollection.swift.gyb

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -60,58 +60,38 @@ CollectionTests.add${traversal}${kind}Tests(
6060
% for (traversal, kind) in variations:
6161
CollectionTests.test("LazyMapCollection instances (${traversal}${kind})") {
6262
do {
63-
// MinimalIterator will error if next() is called after exhaustion
64-
var resiliency = CollectionMisuseResiliencyChecks.all
65-
resiliency.callNextOnExhaustedGenerator = false
66-
6763
let expected = ["convent", "conform", "constrict", "condone"]
6864
let base = ["vent", "form", "strict", "done"]
6965
% if kind == 'Sequence':
7066
checkSequence(
7167
expected,
72-
MinimalSequence(elements: base).lazy.map { "con" + $0 },
73-
resiliencyChecks: resiliency
74-
)
68+
MinimalSequence(elements: base).lazy.map { "con" + $0 })
7569
% elif traversal == '' and kind == 'Collection':
7670
checkForwardCollection(expected,
7771
MinimalCollection(elements: base).lazy.map { "con" + $0 },
78-
resiliencyChecks: resiliency,
79-
sameValue: { $0 == $1 }
80-
)
72+
sameValue: { $0 == $1 })
8173
% else:
8274
check${traversal}${kind}(expected,
8375
Minimal${traversal}${kind}(elements: base).lazy.map { "con" + $0 },
84-
resiliencyChecks: resiliency,
85-
sameValue: { $0 == $1 }
86-
)
76+
sameValue: { $0 == $1 })
8777
% end
8878
}
8979
do {
90-
// MinimalIterator will error if next() is called after exhaustion
91-
var resiliency = CollectionMisuseResiliencyChecks.all
92-
resiliency.callNextOnExhaustedGenerator = false
93-
9480
let expected = [1, 4, 9, 16, 25, 36, 49, 64]
9581
let base = [1, 2, 3, 4, 5, 6, 7, 8]
9682
% if kind == 'Sequence':
9783
checkSequence(
9884
expected,
99-
MinimalSequence(elements: base).lazy.map { $0 * $0 },
100-
resiliencyChecks: resiliency
101-
)
85+
MinimalSequence(elements: base).lazy.map { $0 * $0 })
10286
% elif traversal == '' and kind == 'Collection':
10387
checkForwardCollection(expected,
10488
MinimalCollection(elements: base).lazy.map { $0 * $0 },
105-
resiliencyChecks: resiliency,
106-
sameValue: { $0 == $1 }
107-
)
89+
sameValue: { $0 == $1 })
10890
% else:
10991
check${traversal}${kind}(
11092
expected,
11193
Minimal${traversal}${kind}(elements: base).lazy.map { $0 * $0 },
112-
resiliencyChecks: resiliency,
113-
sameValue: { $0 == $1 }
114-
)
94+
sameValue: { $0 == $1 })
11595
% end
11696
}
11797
}

0 commit comments

Comments
 (0)