aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform/Memoize.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-05-27 19:20:32 +0200
committerMartin Odersky <odersky@gmail.com>2015-05-27 19:20:43 +0200
commitd81fc0395d525f4dd0ec7d1707b3f0249b014edb (patch)
tree13cef22327b2219aba5c6053ece1f8c643572020 /src/dotty/tools/dotc/transform/Memoize.scala
parentc6425f0e103194e50576c591ebab87b19c4b83c3 (diff)
downloaddotty-d81fc0395d525f4dd0ec7d1707b3f0249b014edb.tar.gz
dotty-d81fc0395d525f4dd0ec7d1707b3f0249b014edb.tar.bz2
dotty-d81fc0395d525f4dd0ec7d1707b3f0249b014edb.zip
Mixin: generate a getter in implementing class only if current
A class might implement several fields in inherited traits with the same and type. In that case only one getter should be produced, but all initializing expressions have to be executed.
Diffstat (limited to 'src/dotty/tools/dotc/transform/Memoize.scala')
-rw-r--r--src/dotty/tools/dotc/transform/Memoize.scala6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/transform/Memoize.scala b/src/dotty/tools/dotc/transform/Memoize.scala
index d96a52868..cbde1ef8a 100644
--- a/src/dotty/tools/dotc/transform/Memoize.scala
+++ b/src/dotty/tools/dotc/transform/Memoize.scala
@@ -50,15 +50,15 @@ import Decorators._
override def transformDefDef(tree: DefDef)(implicit ctx: Context, info: TransformerInfo): Tree = {
val sym = tree.symbol
-
+
def newField = ctx.newSymbol(
owner = ctx.owner,
name = sym.name.asTermName.fieldName,
flags = Private | (if (sym is Stable) EmptyFlags else Mutable),
info = sym.info.resultType,
coord = tree.pos).enteredAfter(thisTransform)
-
- lazy val field = sym.field.orElse(newField).asTerm
+
+ lazy val field = sym.field.orElse(newField).asTerm
if (sym.is(Accessor, butNot = NoFieldNeeded))
if (sym.isGetter) {
tree.rhs.changeOwnerAfter(sym, field, thisTransform)