Skip to content

Commit 0255a5b

Browse files
committed
Revert "[stdlib] [Generator|Sequence]Of => Any[Generator|Sequence]"
This reverts commit r26904. Fixing the build. Swift SVN r26912
1 parent d53bff7 commit 0255a5b

10 files changed

+95
-79
lines changed

stdlib/public/core/Character.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,8 @@ public struct Character :
136136
}
137137

138138
internal static func _makeSmallUTF8Generator(var u8: UInt64)
139-
-> AnyGenerator<UTF8.CodeUnit> {
140-
return anyGenerator {
139+
-> GeneratorOf<UTF8.CodeUnit> {
140+
return GeneratorOf<UTF8.CodeUnit> {
141141
let result = UInt8(truncatingBitPattern: u8)
142142
if result == 0xFF {
143143
return nil

stdlib/public/core/Existential.swift

+64-10
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,75 @@
1818
// Policy.swift. Similar components should usually be defined next to
1919
// their respective protocols.
2020

21-
@availability(*, unavailable, renamed="AnyGenerator")
22-
public struct GeneratorOf<T> {
23-
@availability(*, unavailable, renamed="anyGenerator")
21+
/// A type-erased generator.
22+
///
23+
/// The generator for `SequenceOf<T>`. Forwards operations to an
24+
/// arbitrary underlying generator with the same `Element` type,
25+
/// hiding the specifics of the underlying generator type.
26+
///
27+
/// See also: `SequenceOf<T>`.
28+
public struct GeneratorOf<T> : GeneratorType, SequenceType {
29+
30+
/// Construct an instance whose `next()` method calls `nextElement`.
2431
public init(_ nextElement: ()->T?) {
25-
fatalError("unavailable")
32+
self._next = nextElement
2633
}
2734

28-
@availability(*, unavailable, renamed="anyGenerator")
35+
/// Construct an instance whose `next()` method pulls its results
36+
/// from `base`.
2937
public init<G: GeneratorType where G.Element == T>(var _ base: G) {
30-
fatalError("unavailable")
38+
self._next = { base.next() }
39+
}
40+
41+
/// Advance to the next element and return it, or `nil` if no next
42+
/// element exists.
43+
///
44+
/// Requires: `next()` has not been applied to a copy of `self`
45+
/// since the copy was made, and no preceding call to `self.next()`
46+
/// has returned `nil`.
47+
public mutating func next() -> T? {
48+
return _next()
49+
}
50+
51+
/// `GeneratorOf<T>` is also a `SequenceType`, so it `generate`\ s
52+
/// a copy of itself
53+
public func generate() -> GeneratorOf {
54+
return self
3155
}
56+
let _next: ()->T?
3257
}
3358

34-
@availability(*, unavailable, renamed="AnySequence")
35-
public struct SequenceOf<T> {}
59+
/// A type-erased sequence.
60+
///
61+
/// Forwards operations to an arbitrary underlying sequence with the
62+
/// same `Element` type, hiding the specifics of the underlying
63+
/// sequence type.
64+
///
65+
/// See also: `GeneratorOf<T>`.
66+
public struct SequenceOf<T> : SequenceType {
67+
/// Construct an instance whose `generate()` method forwards to
68+
/// `makeUnderlyingGenerator`
69+
public init<G: GeneratorType where G.Element == T>(
70+
_ makeUnderlyingGenerator: ()->G
71+
) {
72+
_generate = { GeneratorOf(makeUnderlyingGenerator()) }
73+
}
74+
75+
/// Construct an instance whose `generate()` method forwards to
76+
/// that of `base`.
77+
public init<S: SequenceType where S.Generator.Element == T>(_ base: S) {
78+
self = SequenceOf({ base.generate() })
79+
}
80+
81+
/// Return a *generator* over the elements of this *sequence*.
82+
///
83+
/// Complexity: O(1)
84+
public func generate() -> GeneratorOf<T> {
85+
return _generate()
86+
}
87+
88+
let _generate: ()->GeneratorOf<T>
89+
}
3690

3791
internal struct _CollectionOf<
3892
IndexType_ : ForwardIndexType, T
@@ -47,9 +101,9 @@ internal struct _CollectionOf<
47101
/// Return a *generator* over the elements of this *sequence*.
48102
///
49103
/// Complexity: O(1)
50-
func generate() -> AnyGenerator<T> {
104+
func generate() -> GeneratorOf<T> {
51105
var index = startIndex
52-
return anyGenerator {
106+
return GeneratorOf {
53107
() -> T? in
54108
if _fastPath(index != self.endIndex) {
55109
++index

test/1_stdlib/Collection.swift

+1-6
Original file line numberDiff line numberDiff line change
@@ -167,11 +167,6 @@ func testCount() {
167167
}
168168
testCount()
169169

170-
struct SequenceOnly<T: SequenceType> : SequenceType {
171-
var base: T
172-
func generate() -> T.Generator { return base.generate() }
173-
}
174-
175170
func testUnderestimateCount() {
176171
// CHECK: testing underestimateCount
177172
println("testing underestimateCount")
@@ -180,7 +175,7 @@ func testUnderestimateCount() {
180175
// CHECK-NEXT: bidirectional: 5
181176
println("bidirectional: \(underestimateCount(dict))")
182177
// CHECK-NEXT: SequenceType only: 0
183-
let s = SequenceOnly(base: array)
178+
let s = SequenceOf(array)
184179
println("SequenceType only: \(underestimateCount(s))")
185180
}
186181
testUnderestimateCount()

test/1_stdlib/Existential.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// RUN: %target-run-simple-swift | FileCheck %s
22

3-
func pipe<T>(input: AnySequence<T>, output: SinkOf<T>) {
3+
func pipe<T>(input: SequenceOf<T>, output: SinkOf<T>) {
44
for x in input {
55
output.put(x)
66
}
@@ -16,7 +16,7 @@ struct Print<T : Printable> : SinkType {
1616
var z = [ 1, 2, 3 ]
1717

1818
func printArray<T : Printable>(x: [T]) {
19-
pipe(AnySequence(x), SinkOf(Print<T>()))
19+
pipe(SequenceOf(x), SinkOf(Print<T>()))
2020
println()
2121
}
2222

test/1_stdlib/Join.swift.gyb

+8-8
Original file line numberDiff line numberDiff line change
@@ -317,50 +317,50 @@ JoinTestSuite.test("OperatorPlus") {
317317
// ExtensibleCollectionType + SequenceType
318318
if true {
319319
var ec: [Int] = []
320-
var s = AnySequence([Int]())
320+
var s = SequenceOf([Int]())
321321
var r: [Int] = ec + s
322322
expectEqual([], r)
323323
}
324324
if true {
325325
var ec: [Int] = []
326-
var s = AnySequence([ 4, 5, 6, 7 ])
326+
var s = SequenceOf([ 4, 5, 6, 7 ])
327327
var r: [Int] = ec + s
328328
expectEqual([ 4, 5, 6, 7 ], r)
329329
}
330330
if true {
331331
var ec: [Int] = [ 1, 2, 3 ]
332-
var s = AnySequence([Int]())
332+
var s = SequenceOf([Int]())
333333
var r: [Int] = ec + s
334334
expectEqual([ 1, 2, 3 ], r)
335335
}
336336
if true {
337337
var ec: [Int] = [ 1, 2, 3 ]
338-
var s = AnySequence([ 4, 5, 6, 7 ])
338+
var s = SequenceOf([ 4, 5, 6, 7 ])
339339
var r: [Int] = ec + s
340340
expectEqual([ 1, 2, 3, 4, 5, 6, 7 ], r)
341341
}
342342

343343
// SequenceType + ExtensibleCollectionType
344344
if true {
345-
var s = AnySequence([Int]())
345+
var s = SequenceOf([Int]())
346346
var ec: [Int] = []
347347
var r: [Int] = s + ec
348348
expectEqual([], r)
349349
}
350350
if true {
351-
var s = AnySequence([Int]())
351+
var s = SequenceOf([Int]())
352352
var ec: [Int] = [ 4, 5, 6, 7 ]
353353
var r: [Int] = s + ec
354354
expectEqual([ 4, 5, 6, 7 ], r)
355355
}
356356
if true {
357-
var s = AnySequence([ 1, 2, 3 ])
357+
var s = SequenceOf([ 1, 2, 3 ])
358358
var ec: [Int] = []
359359
var r: [Int] = s + ec
360360
expectEqual([ 1, 2, 3 ], r)
361361
}
362362
if true {
363-
var s = AnySequence([ 1, 2, 3 ])
363+
var s = SequenceOf([ 1, 2, 3 ])
364364
var ec: [Int] = [ 4, 5, 6, 7]
365365
var r: [Int] = s + ec
366366
expectEqual([ 1, 2, 3, 4, 5, 6, 7 ], r)

test/1_stdlib/NewArray.swift.gyb

+1-1
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,7 @@ testIsEmptyFirstLast${A}()
483483
//===--- Regression Tests -------------------------------------------------===//
484484
func rdar16958865() {
485485
var a: [Int] = []
486-
a += AnySequence([ 42, 4242 ])
486+
a += SequenceOf([ 42, 4242 ])
487487
// CHECK-NEXT: [42, 4242]
488488
println(a)
489489
}

test/Generics/same_type_constraints.swift

-33
Original file line numberDiff line numberDiff line change
@@ -43,39 +43,6 @@ struct SatisfySameTypeAssocTypeRequirementDependent<T>
4343
func foo<F3: Fooable where F3.Foo == T>(f: F3) {}
4444
}
4545

46-
// Pulled in from old standard library to keep the following test
47-
// (LazySequenceOf) valid.
48-
public struct GeneratorOf<T> : GeneratorType, SequenceType {
49-
50-
/// Construct an instance whose `next()` method calls `nextElement`.
51-
public init(_ nextElement: ()->T?) {
52-
self._next = nextElement
53-
}
54-
55-
/// Construct an instance whose `next()` method pulls its results
56-
/// from `base`.
57-
public init<G: GeneratorType where G.Element == T>(var _ base: G) {
58-
self._next = { base.next() }
59-
}
60-
61-
/// Advance to the next element and return it, or `nil` if no next
62-
/// element exists.
63-
///
64-
/// Requires: `next()` has not been applied to a copy of `self`
65-
/// since the copy was made, and no preceding call to `self.next()`
66-
/// has returned `nil`.
67-
public mutating func next() -> T? {
68-
return _next()
69-
}
70-
71-
/// `GeneratorOf<T>` is also a `SequenceType`, so it `generate`\ s
72-
/// a copy of itself
73-
public func generate() -> GeneratorOf {
74-
return self
75-
}
76-
let _next: ()->T?
77-
}
78-
7946
// rdar://problem/19009056
8047
public struct LazySequenceOf<S : SequenceType, A where S.Generator.Element == A> : SequenceType {
8148
public func generate() -> GeneratorOf<A> {

test/SILGen/witness_same_type.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ struct Foo: Fooable {
2020
// rdar://problem/19049566
2121
// CHECK-LABEL: sil [transparent] [thunk] @_TTWUSs12SequenceType__USs13GeneratorType__GV17witness_same_type14LazySequenceOfQ_Q0__Ss14_Sequence_TypeS1_FS3_8generateUS3__US0____fQPS3_FT_QS4_9Generator
2222
public struct LazySequenceOf<SS : SequenceType, A where SS.Generator.Element == A> : SequenceType {
23-
public func generate() -> AnyGenerator<A> {
24-
var opt: AnyGenerator<A>?
23+
public func generate() -> GeneratorOf<A> {
24+
var opt: GeneratorOf<A>?
2525
return opt!
2626
}
2727
public subscript(i : Int) -> A {

validation-test/stdlib/Concatenate.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ for (expected, source) in samples {
4646
ConcatenateTests.test("sequence-\(source)") {
4747
checkSequence(
4848
ContiguousArray(expected),
49-
_lazyConcatenate(AnySequence(source)),
49+
_lazyConcatenate(SequenceOf(source)),
5050
SourceLocStack().withCurrentLoc())
5151
}
5252
}

validation-test/stdlib/Set.swift

+14-14
Original file line numberDiff line numberDiff line change
@@ -2479,23 +2479,23 @@ SetTestSuite.test("⊈.Set.Set") {
24792479

24802480
SetTestSuite.test("isSubsetOf.Set.Sequence") {
24812481
let s1 = Set([1010, 2020, 3030, 4040, 5050, 6060])
2482-
let s2 = AnySequence([1010, 2020, 3030])
2482+
let s2 = SequenceOf([1010, 2020, 3030])
24832483
expectTrue(Set<Int>().isSubsetOf(s1))
24842484
expectFalse(s1.isSubsetOf(Set<Int>()))
24852485
expectTrue(s1.isSubsetOf(s1))
24862486
}
24872487

24882488
SetTestSuite.test("⊆.Set.Sequence") {
24892489
let s1 = Set([1010, 2020, 3030, 4040, 5050, 6060])
2490-
let s2 = AnySequence([1010, 2020, 3030])
2490+
let s2 = SequenceOf([1010, 2020, 3030])
24912491
expectTrue(Set<Int>().isSubsetOf(s1))
24922492
expectFalse(s1 Set<Int>())
24932493
expectTrue(s1 s1)
24942494
}
24952495

24962496
SetTestSuite.test("⊈.Set.Sequence") {
24972497
let s1 = Set([1010, 2020, 3030, 4040, 5050, 6060])
2498-
let s2 = AnySequence([1010, 2020, 3030])
2498+
let s2 = SequenceOf([1010, 2020, 3030])
24992499
expectFalse(Set<Int>() s1)
25002500
expectTrue(s1 Set<Int>())
25012501
expectFalse(s1 s1)
@@ -2527,23 +2527,23 @@ SetTestSuite.test("⊄.Set.Set") {
25272527

25282528
SetTestSuite.test("isStrictSubsetOf.Set.Sequence") {
25292529
let s1 = Set([1010, 2020, 3030, 4040, 5050, 6060])
2530-
let s2 = AnySequence([1010, 2020, 3030])
2530+
let s2 = SequenceOf([1010, 2020, 3030])
25312531
expectTrue(Set<Int>().isStrictSubsetOf(s1))
25322532
expectFalse(s1.isStrictSubsetOf(Set<Int>()))
25332533
expectFalse(s1.isStrictSubsetOf(s1))
25342534
}
25352535

25362536
SetTestSuite.test("⊂.Set.Sequence") {
25372537
let s1 = Set([1010, 2020, 3030, 4040, 5050, 6060])
2538-
let s2 = AnySequence([1010, 2020, 3030])
2538+
let s2 = SequenceOf([1010, 2020, 3030])
25392539
expectTrue(Set<Int>() s1)
25402540
expectFalse(s1 Set<Int>())
25412541
expectFalse(s1 s1)
25422542
}
25432543

25442544
SetTestSuite.test("⊄.Set.Sequence") {
25452545
let s1 = Set([1010, 2020, 3030, 4040, 5050, 6060])
2546-
let s2 = AnySequence([1010, 2020, 3030])
2546+
let s2 = SequenceOf([1010, 2020, 3030])
25472547
expectFalse(Set<Int>() s1)
25482548
expectTrue(s1 Set<Int>())
25492549
expectTrue(s1 s1)
@@ -2581,7 +2581,7 @@ SetTestSuite.test("⊉.Set.Set") {
25812581

25822582
SetTestSuite.test("isSupersetOf.Set.Sequence") {
25832583
let s1 = Set([1010, 2020, 3030, 4040, 5050, 6060])
2584-
let s2 = AnySequence([1010, 2020, 3030])
2584+
let s2 = SequenceOf([1010, 2020, 3030])
25852585
expectTrue(s1.isSupersetOf(Set<Int>()))
25862586
expectFalse(Set<Int>().isSupersetOf(s1))
25872587
expectTrue(s1.isSupersetOf(s1))
@@ -2591,7 +2591,7 @@ SetTestSuite.test("isSupersetOf.Set.Sequence") {
25912591

25922592
SetTestSuite.test("⊇.Set.Sequence") {
25932593
let s1 = Set([1010, 2020, 3030, 4040, 5050, 6060])
2594-
let s2 = AnySequence([1010, 2020, 3030])
2594+
let s2 = SequenceOf([1010, 2020, 3030])
25952595
expectTrue(s1 Set<Int>())
25962596
expectFalse(Set<Int>() s1)
25972597
expectTrue(s1 s1)
@@ -2601,7 +2601,7 @@ SetTestSuite.test("⊇.Set.Sequence") {
26012601

26022602
SetTestSuite.test("⊉.Set.Sequence") {
26032603
let s1 = Set([1010, 2020, 3030, 4040, 5050, 6060])
2604-
let s2 = AnySequence([1010, 2020, 3030])
2604+
let s2 = SequenceOf([1010, 2020, 3030])
26052605
expectFalse(s1 Set<Int>())
26062606
expectTrue(Set<Int>() s1)
26072607
expectFalse(s1 s1)
@@ -2638,7 +2638,7 @@ SetTestSuite.test("⊅.Set.Set") {
26382638

26392639
SetTestSuite.test("strictSuperset.Set.Sequence") {
26402640
let s1 = Set([1010, 2020, 3030, 4040, 5050, 6060])
2641-
let s2 = AnySequence([1010, 2020, 3030])
2641+
let s2 = SequenceOf([1010, 2020, 3030])
26422642
expectTrue(s1.isStrictSupersetOf(Set<Int>()))
26432643
expectFalse(Set<Int>().isStrictSupersetOf(s1))
26442644
expectFalse(s1.isStrictSupersetOf(s1))
@@ -2647,7 +2647,7 @@ SetTestSuite.test("strictSuperset.Set.Sequence") {
26472647

26482648
SetTestSuite.test("⊃.Set.Sequence") {
26492649
let s1 = Set([1010, 2020, 3030, 4040, 5050, 6060])
2650-
let s2 = AnySequence([1010, 2020, 3030])
2650+
let s2 = SequenceOf([1010, 2020, 3030])
26512651
expectTrue(s1 Set<Int>())
26522652
expectFalse(Set<Int>() s1)
26532653
expectFalse(s1 s1)
@@ -2656,7 +2656,7 @@ SetTestSuite.test("⊃.Set.Sequence") {
26562656

26572657
SetTestSuite.test("⊅.Set.Sequence") {
26582658
let s1 = Set([1010, 2020, 3030, 4040, 5050, 6060])
2659-
let s2 = AnySequence([1010, 2020, 3030])
2659+
let s2 = SequenceOf([1010, 2020, 3030])
26602660
expectFalse(s1 Set<Int>())
26612661
expectTrue(Set<Int>() s1)
26622662
expectTrue(s1 s1)
@@ -2717,8 +2717,8 @@ SetTestSuite.test("isDisjointWith.Set.Set") {
27172717

27182718
SetTestSuite.test("isDisjointWith.Set.Sequence") {
27192719
let s1 = Set([1010, 2020, 3030, 4040, 5050, 6060])
2720-
let s2 = AnySequence([1010, 2020, 3030])
2721-
let s3 = AnySequence([7070, 8080, 9090])
2720+
let s2 = SequenceOf([1010, 2020, 3030])
2721+
let s3 = SequenceOf([7070, 8080, 9090])
27222722
expectTrue(s1.isDisjointWith(s3))
27232723
expectFalse(s1.isDisjointWith(s2))
27242724
expectTrue(Set<Int>().isDisjointWith(s1))

0 commit comments

Comments
 (0)