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),