summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/LambdaLift.java
diff options
context:
space:
mode:
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()) {