diff options
author | paltherr <paltherr@epfl.ch> | 2004-09-16 16:03:58 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2004-09-16 16:03:58 +0000 |
commit | 3fe1910a3f17805ec55815ed61c86174cdf91a1c (patch) | |
tree | 912b9e684f60a561f2699ff32a8d64ac9ec1018e | |
parent | f614ac93d2d3d6e01f3b7ccd7c2c84ee2b734d62 (diff) | |
download | scala-3fe1910a3f17805ec55815ed61c86174cdf91a1c.tar.gz scala-3fe1910a3f17805ec55815ed61c86174cdf91a1c.tar.bz2 scala-3fe1910a3f17805ec55815ed61c86174cdf91a1c.zip |
- Generalized the code that transforms local va...
- Generalized the code that transforms local variables of primary
constructors to work for all constructors
-rw-r--r-- | sources/scalac/transformer/AddConstructors.java | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/sources/scalac/transformer/AddConstructors.java b/sources/scalac/transformer/AddConstructors.java index 2f95cbaecc..dc9e852013 100644 --- a/sources/scalac/transformer/AddConstructors.java +++ b/sources/scalac/transformer/AddConstructors.java @@ -212,9 +212,14 @@ public class AddConstructors extends GenTransformer { case ValDef(_, _, _, _): case LabelDef(_, _, _): - if (primaryInitializer != null) - if (tree.symbol().owner() != primaryInitializer) - tree.symbol().setOwner(primaryInitializer); + Symbol symbol = tree.symbol(); + if (symbol.owner().isConstructor()) { + // update symbols like x in these examples + // ex 1: class C { { val x = ...; ... } } + // ex 2: class C { def this(i: Int) { val x = i; ... } } + symbol.setOwner(getInitializer(symbol.owner())); + symbol.updateInfo(subst.apply(symbol.info())); + } return super.transform(tree); case New(Tree init): |