1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
package test; object test { abstract class A { abstract class C { type M; def foo(n : M) : Unit = {} } } trait B extends A { type N; trait CC extends super.C { type M = N; override def foo(n : M) : Unit = super.foo(n); } } }