summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschinz <schinz@epfl.ch>2003-03-10 12:15:05 +0000
committerschinz <schinz@epfl.ch>2003-03-10 12:15:05 +0000
commitb5308c3f448c110d53f7e580e46529557e067ea5 (patch)
treee9ffdb7896e645fc02cdaa7676be06db79117f97
parentd5da7d9aa5a8d4833775454853e81ead20cc37a7 (diff)
downloadscala-b5308c3f448c110d53f7e580e46529557e067ea5.tar.gz
scala-b5308c3f448c110d53f7e580e46529557e067ea5.tar.bz2
scala-b5308c3f448c110d53f7e580e46529557e067ea5.zip
- bug fix: do not prefix accesses to outer clas...
- bug fix: do not prefix accesses to outer class with "this" which is unnecessary, and even wrong in calls to super constructors.
-rw-r--r--sources/scalac/transformer/ExplicitOuterClasses.java20
1 files changed, 12 insertions, 8 deletions
diff --git a/sources/scalac/transformer/ExplicitOuterClasses.java b/sources/scalac/transformer/ExplicitOuterClasses.java
index 0df2103e1e..5eff0c87bb 100644
--- a/sources/scalac/transformer/ExplicitOuterClasses.java
+++ b/sources/scalac/transformer/ExplicitOuterClasses.java
@@ -126,16 +126,20 @@ public class ExplicitOuterClasses extends Transformer {
protected Tree outerRef(int level) {
assert level >= 0 : level;
- Symbol thisSym = (Symbol)classStack.getFirst();
- Tree root = gen.This(thisSym.pos, thisSym);
+ if (level == 0) {
+ Symbol thisSym = (Symbol)classStack.getFirst();
+ return gen.This(thisSym.pos, thisSym);
+ } else {
+ Iterator outerIt = outerLinks.iterator();
+ Tree root = gen.Ident((Symbol)outerIt.next());
+
+ for (int l = 1; l < level; ++l) {
+ Symbol outerSym = (Symbol)outerIt.next();
+ root = gen.mkStable(gen.Select(root, outerSym));
+ }
- Iterator outerIt = outerLinks.iterator();
- for (int l = 1; l <= level; ++l) {
- Symbol outerSym = (Symbol)outerIt.next();
- root = gen.mkStable(gen.Select(root, outerSym));
+ return root;
}
-
- return root;
}
public Tree transform(Tree tree) {