summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/AddAccessors.java
diff options
context:
space:
mode:
Diffstat (limited to 'sources/scalac/transformer/AddAccessors.java')
-rw-r--r--sources/scalac/transformer/AddAccessors.java7
1 files changed, 5 insertions, 2 deletions
diff --git a/sources/scalac/transformer/AddAccessors.java b/sources/scalac/transformer/AddAccessors.java
index e3dc2e88e5..9b91677a83 100644
--- a/sources/scalac/transformer/AddAccessors.java
+++ b/sources/scalac/transformer/AddAccessors.java
@@ -37,6 +37,7 @@ public class AddAccessors extends Transformer {
protected final HashMap/*<Symbol,Symbol>*/ accessorMap = new HashMap();
protected boolean inClassContext;
+ protected Symbol clasz;
protected Symbol accessor(Symbol sym) {
Symbol accessor = (Symbol)accessorMap.get(sym);
@@ -61,7 +62,8 @@ public class AddAccessors extends Transformer {
Tree.ValDef[][] vparams,
Tree tpe,
Tree.Template impl): {
- Symbol clsSym = tree.symbol();
+ Symbol backup = clasz;
+ Symbol clsSym = clasz = tree.symbol();
assert vparams.length == 1;
Tree.ValDef[] params = vparams[0];
@@ -109,6 +111,7 @@ public class AddAccessors extends Transformer {
Tree[] newBodyA = (Tree[])newBody.toArray(new Tree[newBody.size()]);
+ clasz = backup;
return copy.ClassDef(tree,
clsSym,
transform(tparams),
@@ -131,7 +134,7 @@ public class AddAccessors extends Transformer {
if (inClassContext
&& sym.name.isTermName()
&& sym.owner().isPrimaryConstructor())
- return gen.Apply(gen.Ident(tree.pos, accessor(sym)));
+ return gen.Apply(gen.Select(gen.This(tree.pos, clasz), accessor(sym)));
else
return copy.Ident(tree, sym);
}