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
|
object Traits {
trait OuterClass[V <: OuterClass[V]#InnerClass] {
trait InnerClass {self: V =>
def method = ()
}
}
trait SubOuterClass[T <: SubOuterClass[T]#SubInnerClass] extends OuterClass[T] {
trait SubInnerClass extends super.InnerClass {self: T => }
}
trait SubOuterClass2[T <: SubOuterClass2[T]#SubInnerClass2] extends OuterClass[T] {
trait SubInnerClass2 extends super.InnerClass {self: InnerClass with T => }
}
}
// object Classes {
// class OuterClass[V <: OuterClass[V]#InnerClass] {
// class InnerClass {self: V =>
// def method = ()
// }
// }
// class SubOuterClass[T <: SubOuterClass[T]#SubInnerClass] extends OuterClass[T] {
// class SubInnerClass extends super.InnerClass {self: T => }
// }
// class SubOuterClass2[T <: SubOuterClass2[T]#SubInnerClass2] extends OuterClass[T] {
// class SubInnerClass2 extends super.InnerClass {self: InnerClass with T => }
// }
// }
|