trait T { lazy val x: String = "foo" }
abstract class AC extends T { def x: Any }
compiles to:
public abstract class AC implements T {
public AC() { super.x(); }
public abstract Object x(); // where did my lazy val go?
}
public interface T {
default public void $init$() { }
default public String x() {
return "foo";
}
}
See https://issues.scala-lang.org/browse/SI-10223