blob: d8cde512d6373ab5b8bf72652fb79e44b48dc0dc [file] [log] [blame]
// RUN: %target-swift-frontend -emit-ir %s
public protocol Graph: class, Collection {
associatedtype V
associatedtype E
}
public protocol EdgeContainer {
associatedtype E
associatedtype Visitor: NeighboursVisitor where Visitor.C == Self
func push(_ thing: E)
}
public protocol NeighboursVisitor {
associatedtype C: EdgeContainer
associatedtype G: Graph where G.E == C.E
}
public enum LIFONeighboursVisitor<C: EdgeContainer, G: Graph>: NeighboursVisitor where G.E == C.E {
}
public class Stack<T, G: Graph>: EdgeContainer where T == G.E {
public typealias E = T
public typealias Visitor = LIFONeighboursVisitor<Stack<T, G>, G>
public func push(_ thing: T) { }
}