aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform/ResolveSuper.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-05-29 11:13:08 +0200
committerMartin Odersky <odersky@gmail.com>2015-06-01 15:04:43 +0200
commit9a167ded3bdecc16eb9636fc3f1b58d3405e2248 (patch)
tree71f8d670b2c455e9ee12842a1e0d39efac9a0448 /src/dotty/tools/dotc/transform/ResolveSuper.scala
parent11848a8c620be514ea43ea4383ca2b91a1aa8627 (diff)
downloaddotty-9a167ded3bdecc16eb9636fc3f1b58d3405e2248.tar.gz
dotty-9a167ded3bdecc16eb9636fc3f1b58d3405e2248.tar.bz2
dotty-9a167ded3bdecc16eb9636fc3f1b58d3405e2248.zip
Move needsForwarder logic from ResolveSuper to MixinOps.
We'd like to make it reusable for a phase that treats Scala2 traits.
Diffstat (limited to 'src/dotty/tools/dotc/transform/ResolveSuper.scala')
-rw-r--r--src/dotty/tools/dotc/transform/ResolveSuper.scala10
1 files changed, 2 insertions, 8 deletions
diff --git a/src/dotty/tools/dotc/transform/ResolveSuper.scala b/src/dotty/tools/dotc/transform/ResolveSuper.scala
index 0f1c448d9..d23e81ab3 100644
--- a/src/dotty/tools/dotc/transform/ResolveSuper.scala
+++ b/src/dotty/tools/dotc/transform/ResolveSuper.scala
@@ -80,15 +80,9 @@ class ResolveSuper extends MiniPhaseTransform with IdentityDenotTransformer { th
for (superAcc <- mixin.info.decls.filter(_ is SuperAccessor).toList)
yield polyDefDef(implementation(superAcc.asTerm), forwarder(rebindSuper(cls, superAcc)))
- def methodOverrides(mixin: ClassSymbol): List[Tree] = {
- def isOverridden(meth: Symbol) = meth.overridingSymbol(cls).is(Method, butNot = Deferred)
- def needsDisambiguation(meth: Symbol): Boolean =
- meth.is(Method, butNot = PrivateOrAccessorOrDeferred) &&
- !isOverridden(meth) &&
- !meth.allOverriddenSymbols.forall(_ is Deferred)
- for (meth <- mixin.info.decls.toList if needsDisambiguation(meth))
+ def methodOverrides(mixin: ClassSymbol): List[Tree] =
+ for (meth <- mixin.info.decls.toList if needsForwarder(meth))
yield polyDefDef(implementation(meth.asTerm), forwarder(meth))
- }
val overrides = mixins.flatMap(mixin => superAccessors(mixin) ::: methodOverrides(mixin))