src/share/classes/com/sun/tools/javac/comp/Lower.java
Print this page
*** 1817,1828 ****
}
/** Return tree simulating the assignment {@code this.name = name}, where
* name is the name of a free variable.
*/
! JCStatement initField(int pos, Name name) {
Scope.Entry e = proxies.lookup(name);
Symbol rhs = e.sym;
Assert.check(rhs.owner.kind == MTH);
Symbol lhs = e.next().sym;
Assert.check(rhs.owner.owner == lhs.owner);
make.at(pos);
--- 1817,1829 ----
}
/** Return tree simulating the assignment {@code this.name = name}, where
* name is the name of a free variable.
*/
! JCStatement initField(MethodSymbol m, int pos, Name name) {
Scope.Entry e = proxies.lookup(name);
+ m.extraParams = m.extraParams.append((VarSymbol)e.sym);
Symbol rhs = e.sym;
Assert.check(rhs.owner.kind == MTH);
Symbol lhs = e.next().sym;
Assert.check(rhs.owner.owner == lhs.owner);
make.at(pos);
*** 2711,2721 ****
if (fvs.nonEmpty()) {
List<Type> addedargtypes = List.nil();
for (List<VarSymbol> l = fvs; l.nonEmpty(); l = l.tail) {
if (TreeInfo.isInitialConstructor(tree))
added = added.prepend(
! initField(tree.body.pos, proxyName(l.head.name)));
addedargtypes = addedargtypes.prepend(l.head.erasure(types));
}
Type olderasure = m.erasure(types);
m.erasure_field = new MethodType(
olderasure.getParameterTypes().appendList(addedargtypes),
--- 2712,2722 ----
if (fvs.nonEmpty()) {
List<Type> addedargtypes = List.nil();
for (List<VarSymbol> l = fvs; l.nonEmpty(); l = l.tail) {
if (TreeInfo.isInitialConstructor(tree))
added = added.prepend(
! initField(m, tree.body.pos, proxyName(l.head.name)));
addedargtypes = addedargtypes.prepend(l.head.erasure(types));
}
Type olderasure = m.erasure(types);
m.erasure_field = new MethodType(
olderasure.getParameterTypes().appendList(addedargtypes),