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.java15
1 files changed, 10 insertions, 5 deletions
diff --git a/sources/scalac/transformer/LambdaLift.java b/sources/scalac/transformer/LambdaLift.java
index 3eeb6d15b5..6e893c835a 100644
--- a/sources/scalac/transformer/LambdaLift.java
+++ b/sources/scalac/transformer/LambdaLift.java
@@ -207,13 +207,19 @@ public class LambdaLift extends OwnerTransformer
}
return super.transform(tree);
- case TypeDef(int mods, Name name, TypeDef[] tparams, Tree rhs):
+ case TypeDef(int mods, Name name, Tree rhs):
// ignore type definition as owner.
// reason: it might be in a refinement
// todo: handle type parameters?
return copy.TypeDef(
tree, mods, name,
- transform(tparams, currentOwner),
+ transform(rhs, currentOwner));
+
+ case ValDef(int mods, Name name, Tree tpe, Tree rhs):
+ // ignore value definition as owner.
+ // reason: it might be in a refinement
+ return copy.ValDef(
+ tree, mods, name, transform(tpe),
transform(rhs, currentOwner));
case Ident(Name name):
@@ -354,20 +360,19 @@ public class LambdaLift extends OwnerTransformer
transform(rhs, sym));
}
- case TypeDef(int mods, Name name, TypeDef[] tparams, Tree rhs):
+ case TypeDef(int mods, Name name, Tree rhs):
// ignore type definition as owner.
// reason: it might be in a refinement
// todo: handle type parameters?
return copy.TypeDef(
tree, mods, name,
- transform(tparams, currentOwner),
transform(rhs, currentOwner));
case ValDef(int mods, Name name, Tree tpe, Tree rhs):
Symbol sym = tree.symbol();
Name name1 = sym.name;
Tree tpe1 = transform(tpe);
- Tree rhs1 = transform(rhs, sym);
+ Tree rhs1 = transform(rhs, currentOwner);
if ((sym.flags & CAPTURED) != 0) {
assert sym.isLocal();
Type unboxedType = sym.typeAt(descr.nextPhase);