diff options
author | schinz <schinz@epfl.ch> | 2003-08-29 13:35:56 +0000 |
---|---|---|
committer | schinz <schinz@epfl.ch> | 2003-08-29 13:35:56 +0000 |
commit | e6d8b58497f54c0339c0c39acf2259c7f4315b33 (patch) | |
tree | 2238875fb3beadea8e95bcda333b65c96447e4be /sources | |
parent | cc58ab3a7f52b83e6d27cdd040a1c43d61300fb3 (diff) | |
download | scala-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.java | 9 |
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); } |