From 76d02d660b9fd2d4e3418ce00fa8b6b6f3ed7575 Mon Sep 17 00:00:00 2001 From: paltherr Date: Tue, 16 Dec 2003 07:39:45 +0000 Subject: - Changed some code to change owner of ValDefs ... - Changed some code to change owner of ValDefs and LabelDefs moved into primary initializer --- sources/scalac/transformer/AddConstructors.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/sources/scalac/transformer/AddConstructors.java b/sources/scalac/transformer/AddConstructors.java index 374851359c..ca406bced9 100644 --- a/sources/scalac/transformer/AddConstructors.java +++ b/sources/scalac/transformer/AddConstructors.java @@ -81,6 +81,9 @@ public class AddConstructors extends GenTransformer { /** A constructor to initializer parameter substitution */ private final SymbolSubstTypeMap subst; + /** The current primary initializer or null */ + private Symbol primaryInitializer; + public AddConstructors(Global global, HashMap initializers) { super(global); this.initializers = initializers; @@ -237,13 +240,23 @@ public class AddConstructors extends GenTransformer { subst.insertSymbol( constructor.valueParams(), initializer.valueParams()); + if (constructor.isPrimaryConstructor()) + primaryInitializer = initializer; rhs = transform(rhs); + primaryInitializer = null; subst.removeSymbol(constructor.valueParams()); subst.removeSymbol(constructor.typeParams()); // add consistent result expression rhs = gen.mkBlock(new Tree[] { rhs, gen.mkUnitLit(rhs.pos) }); return gen.DefDef(initializer, rhs); + case ValDef(_, _, _, _): + case LabelDef(_, _, _): + if (primaryInitializer != null) + if (tree.symbol().owner() != primaryInitializer) + tree.symbol().setOwner(primaryInitializer); + return super.transform(tree); + case New(Template(Tree[] parents, _)): return gen.New(transform(parents[0], true)); -- cgit v1.2.3