diff options
author | Martin Odersky <odersky@gmail.com> | 2015-05-28 10:18:13 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2015-05-28 10:18:13 +0200 |
commit | 7779b8fefa745e8b034bc33f46d21bd8599ac4a0 (patch) | |
tree | 7a5fd61ad9bb280de82af47818ed7f8b56fa929f /src/dotty/tools/dotc/transform/Mixin.scala | |
parent | 05679f3afccc2a3085bc089bccbdc03096fb90a0 (diff) | |
download | dotty-7779b8fefa745e8b034bc33f46d21bd8599ac4a0.tar.gz dotty-7779b8fefa745e8b034bc33f46d21bd8599ac4a0.tar.bz2 dotty-7779b8fefa745e8b034bc33f46d21bd8599ac4a0.zip |
Refine definition of isCurrent
Fixes problem with run/t261.scala.
Diffstat (limited to 'src/dotty/tools/dotc/transform/Mixin.scala')
-rw-r--r-- | src/dotty/tools/dotc/transform/Mixin.scala | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/transform/Mixin.scala b/src/dotty/tools/dotc/transform/Mixin.scala index d5c5746f3..d2e7943f8 100644 --- a/src/dotty/tools/dotc/transform/Mixin.scala +++ b/src/dotty/tools/dotc/transform/Mixin.scala @@ -152,9 +152,10 @@ class Mixin extends MiniPhaseTransform with SymTransformer { thisTransform => def traitInits(mixin: ClassSymbol): List[Tree] = for (getter <- mixin.info.decls.filter(getr => getr.isGetter && !wasDeferred(getr)).toList) yield { - // transformFollowing call is needed to make memoize & lazy vals run + // transformFollowing call is needed to make memoize & lazy vals run val rhs = transformFollowing(superRef(initializer(getter)).appliedToNone) - val isCurrent = ctx.atPhase(thisTransform) { implicit ctx => + // isCurrent: getter is a member of implementing class + val isCurrent = getter.is(ExpandedName) || ctx.atPhase(thisTransform) { implicit ctx => cls.info.member(getter.name).suchThat(_.isGetter).symbol == getter } if (isCurrent) transformFollowing(DefDef(implementation(getter.asTerm), rhs)) |