summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorschinz <schinz@epfl.ch>2003-03-12 08:49:59 +0000
committerschinz <schinz@epfl.ch>2003-03-12 08:49:59 +0000
commit83ae0d91c21101f391a2399ba0ab9d8dbd8e7428 (patch)
tree62989c02607d4f0fefa4097b0e9d9afeba4404c1 /sources
parentb1f3fad210bb15332bbf5c194da60065cf47c5d8 (diff)
downloadscala-83ae0d91c21101f391a2399ba0ab9d8dbd8e7428.tar.gz
scala-83ae0d91c21101f391a2399ba0ab9d8dbd8e7428.tar.bz2
scala-83ae0d91c21101f391a2399ba0ab9d8dbd8e7428.zip
- bug fix: replace "this" expressions which ref...
- bug fix: replace "this" expressions which refer to outer classes by uses of outer links
Diffstat (limited to 'sources')
-rw-r--r--sources/scalac/transformer/ExplicitOuterClasses.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/sources/scalac/transformer/ExplicitOuterClasses.java b/sources/scalac/transformer/ExplicitOuterClasses.java
index 5eff0c87bb..80fbf4abaf 100644
--- a/sources/scalac/transformer/ExplicitOuterClasses.java
+++ b/sources/scalac/transformer/ExplicitOuterClasses.java
@@ -177,6 +177,16 @@ public class ExplicitOuterClasses extends Transformer {
}
}
+ case This(Tree qualifier): {
+ // If "this" refers to some outer class, replace it by
+ // explicit reference to it.
+ int level = qualifier.hasSymbol() ? outerLevel(qualifier.symbol()) : 0;
+ if (level > 0)
+ return outerRef(level);
+ else
+ return super.transform(tree);
+ }
+
case Apply(Tree fun, Tree[] args): {
// Add outer parameter to constructor calls.
Tree realFun;