aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-04-27 18:03:43 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-04-30 14:26:06 +0200
commitf9a15df76853071b8643c30509a92321040047de (patch)
tree9bfd1fa3f867127d60040e772c583f569d158953
parenta049c82093c02c471e0cd44e9de916fd1c1c0724 (diff)
downloaddotty-f9a15df76853071b8643c30509a92321040047de.tar.gz
dotty-f9a15df76853071b8643c30509a92321040047de.tar.bz2
dotty-f9a15df76853071b8643c30509a92321040047de.zip
Mixing should make initialisers out of lazy vals.
-rw-r--r--src/dotty/tools/dotc/transform/Mixin.scala4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/transform/Mixin.scala b/src/dotty/tools/dotc/transform/Mixin.scala
index 7950149d6..e20468899 100644
--- a/src/dotty/tools/dotc/transform/Mixin.scala
+++ b/src/dotty/tools/dotc/transform/Mixin.scala
@@ -97,7 +97,9 @@ class Mixin extends MiniPhaseTransform with SymTransformer { thisTransform =>
def traitDefs(stats: List[Tree]): List[Tree] = {
val initBuf = new mutable.ListBuffer[Tree]
stats flatMap {
- case stat: DefDef if stat.symbol.isGetter && !stat.rhs.isEmpty =>
+ case stat: DefDef if stat.symbol.isGetter && !stat.rhs.isEmpty && !stat.symbol.is(Flags.Lazy) =>
+ // make initializer that has all effects of previous getter,
+ // replace getter rhs with empty tree.
val vsym = stat.symbol
val isym = initializer(vsym)
val rhs = Block(