aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform/Mixin.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-05-28 10:18:13 +0200
committerMartin Odersky <odersky@gmail.com>2015-05-28 10:18:13 +0200
commit7779b8fefa745e8b034bc33f46d21bd8599ac4a0 (patch)
tree7a5fd61ad9bb280de82af47818ed7f8b56fa929f /src/dotty/tools/dotc/transform/Mixin.scala
parent05679f3afccc2a3085bc089bccbdc03096fb90a0 (diff)
downloaddotty-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.scala5
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))