diff options
-rw-r--r-- | src/dotty/tools/dotc/transform/LazyVals.scala | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/dotty/tools/dotc/transform/LazyVals.scala b/src/dotty/tools/dotc/transform/LazyVals.scala index 27625085f..925646ca5 100644 --- a/src/dotty/tools/dotc/transform/LazyVals.scala +++ b/src/dotty/tools/dotc/transform/LazyVals.scala @@ -59,20 +59,20 @@ class LazyVals extends MiniPhaseTransform with IdentityDenotTransformer { } } - /** Append offset fields to companion objects - */ - override def transformTypeDef(tree: TypeDef)(implicit ctx: Context, info: TransformerInfo): Tree = { - if (!tree.symbol.isClass) tree - else { - appendOffsetDefs.get(tree.symbol) match { - case None => tree - case Some(data) => - val template = tree.rhs.asInstanceOf[Template] - val newTemplate = cpy.Template(template)(body = data.defs ::: template.body) - cpy.TypeDef(tree)(rhs = newTemplate) //(ctx.withMode(Mode.FutureDefsOK)) - } - } + + /** Append offset fields to companion objects + */ + override def transformTemplate(template: tpd.Template)(implicit ctx: Context, info: TransformerInfo): tpd.Tree = { + val cls = ctx.owner.asClass + + appendOffsetDefs.get(cls) match { + case None => template + case Some(data) => + cpy.Template(template)(body = data.defs ::: template.body) } + + } + /** Replace a local lazy val inside a method, * with a LazyHolder from * dotty.runtime(eg dotty.runtime.LazyInt) |