diff options
author | paltherr <paltherr@epfl.ch> | 2003-10-15 13:05:18 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2003-10-15 13:05:18 +0000 |
commit | e006340aeb005de4904c51549b2bc06c4cb426d2 (patch) | |
tree | 4ef972489b562adf70bca634f3fbb8c0dadb9650 /sources | |
parent | 53a5a8b25428e4c4c440719fa0cb3c324f046d24 (diff) | |
download | scala-e006340aeb005de4904c51549b2bc06c4cb426d2.tar.gz scala-e006340aeb005de4904c51549b2bc06c4cb426d2.tar.bz2 scala-e006340aeb005de4904c51549b2bc06c4cb426d2.zip |
- Fixed computation of enclosing class
Diffstat (limited to 'sources')
-rw-r--r-- | sources/scalac/transformer/LambdaLift.java | 7 |
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()) { |