-
Notifications
You must be signed in to change notification settings - Fork 10.4k
/
Copy path0208-issue-51259.swift
62 lines (42 loc) · 1.27 KB
/
0208-issue-51259.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// RUN: not --crash %target-swift-frontend -emit-ir %s
// rdar://problem/65571199
// UNSUPPORTED: asan
// https://github.com/apple/swift/issues/51259
protocol TreeProtocol {
typealias NodeProtocol = _TreeNodeProtocol
associatedtype Node : NodeProtocol where Node.Tree == Self
associatedtype NValuesTraversedBreadthFirst : Sequence = FooVals<Self> where NValuesTraversedBreadthFirst.Iterator.Element == Node.Val
var root: Node? { get }
}
protocol _TreeNodeProtocol {
associatedtype Tree : TreeProtocol where Tree.Node == Self
associatedtype Val
var value: Val { get }
var children: [Tree.Node] { get }
}
struct Foo<V> : TreeProtocol {
struct Node : _TreeNodeProtocol {
typealias Tree = Foo
typealias Val = V
var value: Val {
fatalError()
}
var children: [Tree.Node] {
fatalError()
}
}
var root: Foo<V>.Node? {
fatalError()
}
}
struct FooVals<F : TreeProtocol> : Sequence {
struct Iterator : IteratorProtocol {
typealias Element = F.Node.Val
mutating func next() -> F.Node.Val? {
fatalError()
}
}
func makeIterator() -> FooVals<F>.Iterator {
fatalError()
}
}