diff options
Diffstat (limited to 'compiler/src/dotty/tools/dotc/transform/Memoize.scala')
-rw-r--r-- | compiler/src/dotty/tools/dotc/transform/Memoize.scala | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/compiler/src/dotty/tools/dotc/transform/Memoize.scala b/compiler/src/dotty/tools/dotc/transform/Memoize.scala index 01c240e3a..0314d4ec4 100644 --- a/compiler/src/dotty/tools/dotc/transform/Memoize.scala +++ b/compiler/src/dotty/tools/dotc/transform/Memoize.scala @@ -47,7 +47,9 @@ import Decorators._ } tree match { case ddef: DefDef - if !ddef.symbol.is(Deferred) && ddef.rhs == EmptyTree => + if !ddef.symbol.is(Deferred) && + !ddef.symbol.isConstructor && // constructors bodies are added later at phase Constructors + ddef.rhs == EmptyTree => errorLackImplementation(ddef) case tdef: TypeDef if tdef.symbol.isClass && !tdef.symbol.is(Deferred) && tdef.rhs == EmptyTree => @@ -89,10 +91,10 @@ import Decorators._ } lazy val field = sym.field.orElse(newField).asTerm - + def adaptToField(tree: Tree) = if (tree.isEmpty) tree else tree.ensureConforms(field.info.widen) - + if (sym.is(Accessor, butNot = NoFieldNeeded)) if (sym.isGetter) { def skipBlocks(t: Tree): Tree = t match { |