From 0310ff02f3553c59dafd717c70f9bf6568f76f1e Mon Sep 17 00:00:00 2001 From: paltherr Date: Tue, 16 Dec 2003 07:41:51 +0000 Subject: - Added some code to make sure that owner of no... - Added some code to make sure that owner of non-member is always a member --- sources/scalac/transformer/LambdaLift.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/sources/scalac/transformer/LambdaLift.java b/sources/scalac/transformer/LambdaLift.java index 028dda4316..c29232bfd5 100644 --- a/sources/scalac/transformer/LambdaLift.java +++ b/sources/scalac/transformer/LambdaLift.java @@ -525,10 +525,14 @@ public class LambdaLift extends OwnerTransformer return newparams; } - /** change symbol of tree so that + /** For members: + * change symbol of tree so that * owner = currentClass * newparams are added * enter symbol in scope of currentClass + * For non-members: + * change symbol of tree so that + * owner = currentMember */ void liftSymbol(Tree tree) { switch (tree) { @@ -549,6 +553,18 @@ public class LambdaLift extends OwnerTransformer liftSymbol( sym, get(free.ftvs, sym).toArray(), ftvsParams(sym), fvsParams(sym)); + break; + + case ValDef(_, _, _, _): + case LabelDef(_, _, _): + Symbol sym = tree.symbol(); + assert sym.isLocal() : sym; + if (!sym.owner().owner().isClass()) { + assert sym.owner().owner().owner().isClass(): tree; + sym.setOwner(sym.owner().owner()); + } + break; + } } -- cgit v1.2.3