summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2004-09-16 16:03:58 +0000
committerpaltherr <paltherr@epfl.ch>2004-09-16 16:03:58 +0000
commit3fe1910a3f17805ec55815ed61c86174cdf91a1c (patch)
tree912b9e684f60a561f2699ff32a8d64ac9ec1018e
parentf614ac93d2d3d6e01f3b7ccd7c2c84ee2b734d62 (diff)
downloadscala-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.java11
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):