summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/LambdaLift.java
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2003-10-15 13:05:18 +0000
committerpaltherr <paltherr@epfl.ch>2003-10-15 13:05:18 +0000
commite006340aeb005de4904c51549b2bc06c4cb426d2 (patch)
tree4ef972489b562adf70bca634f3fbb8c0dadb9650 /sources/scalac/transformer/LambdaLift.java
parent53a5a8b25428e4c4c440719fa0cb3c324f046d24 (diff)
downloadscala-e006340aeb005de4904c51549b2bc06c4cb426d2.tar.gz
scala-e006340aeb005de4904c51549b2bc06c4cb426d2.tar.bz2
scala-e006340aeb005de4904c51549b2bc06c4cb426d2.zip
- Fixed computation of enclosing class
Diffstat (limited to 'sources/scalac/transformer/LambdaLift.java')
-rw-r--r--sources/scalac/transformer/LambdaLift.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/sources/scalac/transformer/LambdaLift.java b/sources/scalac/transformer/LambdaLift.java
index 0aead5fd5c..65f72b8687 100644
--- a/sources/scalac/transformer/LambdaLift.java
+++ b/sources/scalac/transformer/LambdaLift.java
@@ -554,7 +554,12 @@ public class LambdaLift extends OwnerTransformer
void liftSymbol(Symbol sym, Symbol[] oldtparams,
Symbol[] newtparams, Symbol[] newparams) {
- Symbol enclClass = sym.owner().enclClass();
+ Symbol enclClass = sym.owner();
+ while (!enclClass.isClassType()) {
+ enclClass = enclClass.isConstructor() && !enclClass.isPrimaryConstructor()
+ ? enclClass.constructorClass()
+ : enclClass.owner();
+ }
if (!sym.isPrimaryConstructor() && !sym.isModuleClass()) sym.setOwner(enclClass);
if (!sym.isConstructor()) enclClass.members().enter(sym);
if (sym.isMethod()) {