1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
object Test { trait Manager { type Node; def iterator : Iterator[Node] } trait Core { type Node; trait NodeImpl trait Manager extends Test.Manager { type Node = Core.this.Node } def f(manager : Manager) = manager.iterator.foreach{ case node : NodeImpl => } } }