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
|
trait Base {
trait AssignArrow {
type T <: Ti0;
trait Ti0;
}
abstract class Arrow extends AssignArrow;
val arrow : Arrow;
}
trait Ext0 extends Base {
trait AssignArrow extends super.AssignArrow {
type T <: Ti1;
trait Ti1 extends super.Ti0;
}
}
trait Ext1 extends Base {
trait Arrow extends super.Arrow {
type T <: Ti2;
trait Ti2 extends super.Ti0;
trait TiXX extends Ti2;
}
val arrow : Arrow;
}
trait Composition extends Ext0 with Ext1 {
object arrow0 extends Arrow with AssignArrow {
type T = TiC
trait TiC extends super[Arrow].Ti2 with super[AssignArrow].Ti1;
}
}
|