The tree (with types) after lambdalift:
abstract class Foo[a]() extends scala{scala}.Object{()scala.Object}(){scala.Object};
final class Bar() extends scala{scala}.Object{()scala.Object}(){scala.Object} {
final def foo[a$0](): scala.Int = {
;
val v: Bar.Anon$0 =
new Anon$0{[a$0]()Bar.Anon$0}[a$0{a$0}]{()Bar.Anon$0}
(){Bar.Anon$0}{Bar.Anon$0};
0{scala.Int}
}{scala.Int};
class Anon$0[a$0]() extends Foo{[a]()Foo[a]}[a$0]{()Foo[a$0]}(){Foo[a$0]}
};
final /*object*/ val Bar: Bar = new Bar{()Bar}(){Bar}{Bar};
The type of v and the type of the trees forming its rhs are wrong: the type argument to class Anon$0 is missing.\
|