summaryrefslogtreecommitdiff
path: root/sources/scalac/typechecker
diff options
context:
space:
mode:
Diffstat (limited to 'sources/scalac/typechecker')
-rw-r--r--sources/scalac/typechecker/Analyzer.java12
-rw-r--r--sources/scalac/typechecker/RefCheck.java24
2 files changed, 12 insertions, 24 deletions
diff --git a/sources/scalac/typechecker/Analyzer.java b/sources/scalac/typechecker/Analyzer.java
index 7099163995..9953f1dde7 100644
--- a/sources/scalac/typechecker/Analyzer.java
+++ b/sources/scalac/typechecker/Analyzer.java
@@ -1169,13 +1169,6 @@ public class Analyzer extends Transformer implements Modifiers, Kinds {
}
}
- Tree makeStableId(int pos, Type tp) {
- if (tp.symbol().isCompoundSym())
- return gen.This(pos, tp.symbol());
- else
- return gen.mkStableId(pos, tp);
- }
-
/** Define self type of class or module `sym'
* associated with `tree' using given `unit' and `context'.
*/
@@ -1500,7 +1493,7 @@ public class Analyzer extends Transformer implements Modifiers, Kinds {
if (sym.owner().kind == CLASS) {
pre = nextcontext.enclClass.owner.thisType();
if (!sym.owner().isPackage()) {
- Tree qual1 = makeStableId(tree.pos, pre);
+ Tree qual1 = gen.This(tree.pos, nextcontext.enclClass.owner);
tree = make.Select(tree.pos, qual1, name);
//System.out.println(name + " :::> " + tree + " " + qual1.symbol());//DEBUG
}
@@ -2203,9 +2196,8 @@ public class Analyzer extends Transformer implements Modifiers, Kinds {
Tree alloc =
gen.New(
gen.Apply(
- gen.mkRef(
+ gen.mkLocalRef(
tree.pos,
- Type.localThisType,
clazz.primaryConstructor()),
Tree.EMPTY_ARRAY))
.setType(owntype);
diff --git a/sources/scalac/typechecker/RefCheck.java b/sources/scalac/typechecker/RefCheck.java
index d787c803cf..ac84a1dbac 100644
--- a/sources/scalac/typechecker/RefCheck.java
+++ b/sources/scalac/typechecker/RefCheck.java
@@ -525,7 +525,7 @@ public class RefCheck extends Transformer implements Modifiers, Kinds {
Symbol sym = tree.symbol();
Tree cdef = gen.ClassDef(sym.moduleClass(), templ);
if (sym.isGlobalModule()) return new Tree[]{cdef};
- Tree alloc = gen.New(gen.mkPrimaryConstr(tree.pos, sym.moduleClass()));
+ Tree alloc = gen.New(gen.mkApply__(gen.mkPrimaryConstructorLocalRef(tree.pos, sym.moduleClass())));
{
// var m$: T = null;
Name varname = Name.fromString(name + "$");
@@ -542,10 +542,10 @@ public class RefCheck extends Transformer implements Modifiers, Kinds {
gen.If(
gen.Apply(
gen.Select(gen.mkNullLit(tree.pos), eqMethod),
- new Tree[]{gen.mkRef(tree.pos, mvar)}),
- gen.Assign(gen.mkRef(tree.pos, mvar), alloc),
+ new Tree[]{gen.mkLocalRef(tree.pos, mvar)}),
+ gen.Assign(gen.mkLocalRef(tree.pos, mvar), alloc),
gen.Block(tree.pos, Tree.EMPTY_ARRAY)),
- gen.mkRef(tree.pos, mvar)});
+ gen.mkLocalRef(tree.pos, mvar)});
// def m: T = { if (m$ == null[T]) m$ = new m$class; m$ }
sym.flags |= STABLE;
@@ -560,7 +560,7 @@ public class RefCheck extends Transformer implements Modifiers, Kinds {
m_eq.setInfo(
Type.MethodType(new Symbol[] {m_eqarg}, defs.UNIT_TYPE()));
Tree m_eqdef = gen.DefDef(m_eq,
- gen.Assign(gen.mkRef(tree.pos, mvar), gen.Ident(tree.pos, m_eqarg)));
+ gen.Assign(gen.mkLocalRef(tree.pos, mvar), gen.Ident(tree.pos, m_eqarg)));
sym.owner().members().enterOrOverload(m_eq);
return new Tree[]{cdef, vdef, ddef, m_eqdef};
@@ -622,8 +622,7 @@ public class RefCheck extends Transformer implements Modifiers, Kinds {
Symbol[] vparams = clazz.primaryConstructor().type().firstParams();
Tree[] fields = new Tree[vparams.length];
for (int i = 0; i < fields.length; i++) {
- fields[i] = gen.mkRef(
- clazz.pos, clazz.thisType(), clazz.caseFieldAccessor(i));
+ fields[i] = gen.mkRef(clazz.pos, clazz.thisType(), clazz.caseFieldAccessor(i));
}
return fields;
}
@@ -675,9 +674,7 @@ public class RefCheck extends Transformer implements Modifiers, Kinds {
}
// if (that is C) {...
Tree cond = gen.TypeApply(
- gen.Select(
- gen.mkRef(clazz.pos, Type.localThisType, equalsParam),
- defs.ANY_IS),
+ gen.Select(gen.mkLocalRef(clazz.pos, equalsParam), defs.ANY_IS),
new Tree[]{gen.mkType(clazz.pos, testtp)});
Tree thenpart;
@@ -687,7 +684,7 @@ public class RefCheck extends Transformer implements Modifiers, Kinds {
// val that1 = that as C;
Tree cast = gen.TypeApply(
gen.Select(
- gen.mkRef(clazz.pos, Type.localThisType, equalsParam),
+ gen.mkLocalRef(clazz.pos, equalsParam),
defs.ANY_AS),
new Tree[]{gen.mkType(clazz.pos, testtp)});
Symbol that1sym = new TermSymbol(clazz.pos, Names.that1, equalsSym, 0)
@@ -697,8 +694,7 @@ public class RefCheck extends Transformer implements Modifiers, Kinds {
// this.elem_1 == that1.elem_1 && ... && this.elem_n == that1.elem_n
Tree cmp = eqOp(
fields[0],
- qualCaseField(clazz,
- gen.mkRef(clazz.pos, Type.localThisType, that1sym), 0));
+ qualCaseField(clazz, gen.mkLocalRef(clazz.pos, that1sym), 0));
for (int i = 1; i < fields.length; i++) {
cmp = gen.Apply(
gen.Select(cmp, defs.BOOLEAN_AND()),
@@ -706,7 +702,7 @@ public class RefCheck extends Transformer implements Modifiers, Kinds {
eqOp(
fields[i],
qualCaseField(clazz,
- gen.mkRef(clazz.pos, Type.localThisType, that1sym), i))});
+ gen.mkLocalRef(clazz.pos, that1sym), i))});
}
thenpart = gen.Block(new Tree[]{that1def, cmp});
}