diff --git a/compiler/src/dotty/tools/dotc/transform/Mixin.scala b/compiler/src/dotty/tools/dotc/transform/Mixin.scala index 437a8a45af3c..d4d798f161d0 100644 --- a/compiler/src/dotty/tools/dotc/transform/Mixin.scala +++ b/compiler/src/dotty/tools/dotc/transform/Mixin.scala @@ -242,7 +242,7 @@ class Mixin extends MiniPhase with SymTransformer { thisPhase => // transformFollowing call is needed to make memoize & lazy vals run transformFollowing(DefDef(implementation(getter.asTerm), rhs)) } - else if (isScala2x || was(getter, ParamAccessor)) EmptyTree + else if (isScala2x || was(getter, ParamAccessor | Lazy)) EmptyTree else initial } } diff --git a/tests/run/i4559.check b/tests/run/i4559.check new file mode 100644 index 000000000000..eabab14e3d41 --- /dev/null +++ b/tests/run/i4559.check @@ -0,0 +1,2 @@ +super[A] init +x() diff --git a/tests/run/i4559.scala b/tests/run/i4559.scala new file mode 100644 index 000000000000..d9b5cb2d8c8a --- /dev/null +++ b/tests/run/i4559.scala @@ -0,0 +1,10 @@ +trait A { + println(s"super[A] init") + lazy val x = { println("super[A].x()"); 123 } +} + +class B extends A { + override lazy val x = { println("x()"); 456 } +} + +object Test { def main(args: Array[String]): Unit = { new B().x } }