diff options
author | paltherr <paltherr@epfl.ch> | 2003-12-16 07:41:51 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2003-12-16 07:41:51 +0000 |
commit | 0310ff02f3553c59dafd717c70f9bf6568f76f1e (patch) | |
tree | c8d7f7f006fa94a330ec159d8e5f21c2f3526888 /sources | |
parent | 76d02d660b9fd2d4e3418ce00fa8b6b6f3ed7575 (diff) | |
download | scala-0310ff02f3553c59dafd717c70f9bf6568f76f1e.tar.gz scala-0310ff02f3553c59dafd717c70f9bf6568f76f1e.tar.bz2 scala-0310ff02f3553c59dafd717c70f9bf6568f76f1e.zip |
- 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
Diffstat (limited to 'sources')
-rw-r--r-- | sources/scalac/transformer/LambdaLift.java | 18 |
1 files changed, 17 insertions, 1 deletions
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; + } } |