aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorodersky <odersky@gmail.com>2016-07-31 13:14:56 +0200
committerGitHub <noreply@github.com>2016-07-31 13:14:56 +0200
commit3e6cdefec861f3b7aa98d0f5cced1a58e1908135 (patch)
tree7f90e1baf8444f07f033eba5b81a4194aeeed657 /src
parentbd71f785f32949e9b6c3b6121bef63d8bf05f231 (diff)
parenta9976bd2729acbceefd46c612a08b8a42ccd9562 (diff)
downloaddotty-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.scala15
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) = {