diff options
-rw-r--r-- | src/dotty/tools/dotc/transform/Mixin.scala | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/transform/Mixin.scala b/src/dotty/tools/dotc/transform/Mixin.scala index 63e680414..b1291ecf4 100644 --- a/src/dotty/tools/dotc/transform/Mixin.scala +++ b/src/dotty/tools/dotc/transform/Mixin.scala @@ -163,7 +163,13 @@ class Mixin extends MiniPhaseTransform with SymTransformer { thisTransform => if (isCurrent(getter) || getter.is(ExpandedName)) // transformFollowing call is needed to make memoize & lazy vals run transformFollowing( - DefDef(implementation(getter.asTerm), if (isScala2x) default else initial)) + DefDef(implementation(getter.asTerm), + if (isScala2x) { + if (getter.is(Flags.Lazy)) // lazy vals need to have a rhs that will be the lazy initializer + ref(mixin.implClass).select(getter.name).appliedTo(This(ctx.owner.asClass)) + else default + } else initial) + ) else if (isScala2x) EmptyTree else initial } |