summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorschinz <schinz@epfl.ch>2003-08-29 13:35:56 +0000
committerschinz <schinz@epfl.ch>2003-08-29 13:35:56 +0000
commite6d8b58497f54c0339c0c39acf2259c7f4315b33 (patch)
tree2238875fb3beadea8e95bcda333b65c96447e4be /sources
parentcc58ab3a7f52b83e6d27cdd040a1c43d61300fb3 (diff)
downloadscala-e6d8b58497f54c0339c0c39acf2259c7f4315b33.tar.gz
scala-e6d8b58497f54c0339c0c39acf2259c7f4315b33.tar.bz2
scala-e6d8b58497f54c0339c0c39acf2259c7f4315b33.zip
- fix symbols referenced by "super" in imported...
- fix symbols referenced by "super" in imported mixins, when needed
Diffstat (limited to 'sources')
-rw-r--r--sources/scalac/transformer/ExpandMixins.java9
1 files changed, 9 insertions, 0 deletions
diff --git a/sources/scalac/transformer/ExpandMixins.java b/sources/scalac/transformer/ExpandMixins.java
index 41816b58f9..1d18e085e8 100644
--- a/sources/scalac/transformer/ExpandMixins.java
+++ b/sources/scalac/transformer/ExpandMixins.java
@@ -210,6 +210,15 @@ public class ClassExpander {
default:
throw Debug.abort("illegal case", tree);
}
+ case Select(Super(_, _), _):
+ Symbol sym = tree.symbol();
+ Symbol newSym = sym.overridingSymbol(parents[0]);
+ if (newSym != Symbol.NONE)
+ return gen.Select(tree.pos,
+ gen.Super(tree.pos, newSym.owner()),
+ newSym);
+ else
+ return super.transform(tree);
default:
return super.transform(tree);
}