blob: d0502b04b3621244a26ad2bac4fce7bf6ad4e576 [file] [log] [blame]
// RUN: not --crash %target-swift-frontend -emit-ir %s
// rdar://problem/65571199
// UNSUPPORTED: asan
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()
}
}