diff options
author | schinz <schinz@epfl.ch> | 2003-03-12 08:49:59 +0000 |
---|---|---|
committer | schinz <schinz@epfl.ch> | 2003-03-12 08:49:59 +0000 |
commit | 83ae0d91c21101f391a2399ba0ab9d8dbd8e7428 (patch) | |
tree | 62989c02607d4f0fefa4097b0e9d9afeba4404c1 /sources | |
parent | b1f3fad210bb15332bbf5c194da60065cf47c5d8 (diff) | |
download | scala-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.java | 10 |
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; |