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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
trait C {}
trait D {}
trait E {}
object test {
def c: C = c;
def d: D = d;
def e: E = e;
}
import test._;
trait S extends o.I {
type Y = D;
def bar: E = foo(c,d);
}
abstract class O() {
type X;
abstract trait I {
type Y;
def foo(x: X, y: Y): E = e;
}
val i:I { type Y = E } = null;
val j:I { type Y = X } = null;
}
object o extends O() {
type X = C;
def main = {
val s: S = null;
import s._;
foo(c,d);
o.i.foo(c,e);
o.j.foo(c,c);
bar
}
}
class Main() {
val s: S = null;
import s._;
foo(c,d);
o.i.foo(c,e);
o.j.foo(c,c);
bar;
}
|