aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/transform/Mixin.scala8
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
}