1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
abstract class FooA { type A <: AxA; abstract class AxA; abstract class InnerA { type B <: A; def doB : B; } } trait FooB extends FooA { type A <: AxB; trait AxB extends AxA { def xxx : Int; } abstract class InnerB extends InnerA { // type B <: A; val a : A = doB; a.xxx; val aaa: InnerB.this.B = doB aaa.xxx; } }