diff options
author | odersky <odersky@gmail.com> | 2016-07-31 13:14:56 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-31 13:14:56 +0200 |
commit | 3e6cdefec861f3b7aa98d0f5cced1a58e1908135 (patch) | |
tree | 7f90e1baf8444f07f033eba5b81a4194aeeed657 /src | |
parent | bd71f785f32949e9b6c3b6121bef63d8bf05f231 (diff) | |
parent | a9976bd2729acbceefd46c612a08b8a42ccd9562 (diff) | |
download | dotty-3e6cdefec861f3b7aa98d0f5cced1a58e1908135.tar.gz dotty-3e6cdefec861f3b7aa98d0f5cced1a58e1908135.tar.bz2 dotty-3e6cdefec861f3b7aa98d0f5cced1a58e1908135.zip |
Merge pull request #1425 from dotty-staging/fix-#1423
Fix #1423: Fix owners of called methods in CollectSuperCalls.
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/backend/jvm/CollectSuperCalls.scala | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/dotty/tools/backend/jvm/CollectSuperCalls.scala b/src/dotty/tools/backend/jvm/CollectSuperCalls.scala index d19228364..8f9b067ba 100644 --- a/src/dotty/tools/backend/jvm/CollectSuperCalls.scala +++ b/src/dotty/tools/backend/jvm/CollectSuperCalls.scala @@ -1,7 +1,7 @@ package dotty.tools.backend.jvm -import dotty.tools.dotc.ast.tpd._ -import dotty.tools.dotc.ast.Trees +import dotty.tools.dotc.ast.tpd +import dotty.tools.dotc.ast.Trees._ import dotty.tools.dotc.core.Contexts.Context import dotty.tools.dotc.core.Symbols._ import dotty.tools.dotc.transform.TreeTransforms.{MiniPhaseTransform, TransformerInfo} @@ -14,17 +14,18 @@ import dotty.tools.dotc.transform.TreeTransforms.{MiniPhaseTransform, Transforme * the redundant mixin class could be required as a parent by the JVM. */ class CollectSuperCalls extends MiniPhaseTransform { + import tpd._ def phaseName: String = "collectSuperCalls" - override def transformSuper(tree: Super)(implicit ctx: Context, info: TransformerInfo): Tree = { - tree match { - case Trees.Super(qual: This, mix) if mix.nonEmpty => + override def transformSelect(tree: Select)(implicit ctx: Context, info: TransformerInfo): Tree = { + tree.qualifier match { + case Super(qual: This, mix) if mix.nonEmpty => val classSymbol = qual.symbol.asClass.classSymbol - registerSuperCall(classSymbol, tree.tpe.baseClasses.head) + registerSuperCall(classSymbol, tree.symbol.owner.asClass) case _ => } - super.transformSuper(tree) + tree } private def registerSuperCall(sym: ClassSymbol, calls: ClassSymbol)(implicit ctx: Context) = { |