diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-04-27 18:03:43 +0200 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-04-30 14:26:06 +0200 |
commit | f9a15df76853071b8643c30509a92321040047de (patch) | |
tree | 9bfd1fa3f867127d60040e772c583f569d158953 | |
parent | a049c82093c02c471e0cd44e9de916fd1c1c0724 (diff) | |
download | dotty-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.scala | 4 |
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( |