summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/LambdaLift.java
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-09-07 17:54:44 +0000
committerMartin Odersky <odersky@gmail.com>2003-09-07 17:54:44 +0000
commit70d78cbfc802ccc49d5d324755865ff07985dfef (patch)
treebc524a99cc8d3f6a5a722a60d98aacbd06f9c92b /sources/scalac/transformer/LambdaLift.java
parent43c5c82eb9ee00e7d87042a1195d854f4ac79df3 (diff)
downloadscala-70d78cbfc802ccc49d5d324755865ff07985dfef.tar.gz
scala-70d78cbfc802ccc49d5d324755865ff07985dfef.tar.bz2
scala-70d78cbfc802ccc49d5d324755865ff07985dfef.zip
*** empty log message ***
Diffstat (limited to 'sources/scalac/transformer/LambdaLift.java')
-rw-r--r--sources/scalac/transformer/LambdaLift.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/sources/scalac/transformer/LambdaLift.java b/sources/scalac/transformer/LambdaLift.java
index 67b396ec2e..9e3a497c80 100644
--- a/sources/scalac/transformer/LambdaLift.java
+++ b/sources/scalac/transformer/LambdaLift.java
@@ -444,9 +444,13 @@ public class LambdaLift extends OwnerTransformer
(sym.kind == TYPE || (sym.kind == VAL && !sym.isMethod()))) {
sym = descr.proxy(sym, currentOwner);
}
- Tree tree1 = copy.Ident(tree, sym).setType(
- sym.nextType());
- if (name != sym.name) ((Ident)tree1).name = sym.name;
+ Tree tree1 = (sym.owner().kind == CLASS)
+ ? gen.mkRef(tree.pos, sym)
+ : copy.Ident(tree, sym).setType(sym.nextType());
+ if (name != sym.name) {
+ if (tree1 instanceof Ident) ((Ident)tree1).name = sym.name;
+ else ((Select)tree1).selector = sym.name;
+ }
if ((sym.flags & CAPTURED) != 0) return gen.Select(tree1, Names.elem);
else return tree1;