src/share/classes/com/sun/tools/javac/comp/Lower.java

changeset 2400
0e026d3f2786
parent 2370
acd64168cf8b
child 2425
76b61848c9a4
equal deleted inserted replaced
2399:f4254623c54e 2400:0e026d3f2786
3470 * where #i is a freshly named synthetic local variable. 3470 * where #i is a freshly named synthetic local variable.
3471 */ 3471 */
3472 private void visitIterableForeachLoop(JCEnhancedForLoop tree) { 3472 private void visitIterableForeachLoop(JCEnhancedForLoop tree) {
3473 make_at(tree.expr.pos()); 3473 make_at(tree.expr.pos());
3474 Type iteratorTarget = syms.objectType; 3474 Type iteratorTarget = syms.objectType;
3475 Type iterableType = types.asSuper(types.upperBound(tree.expr.type), 3475 Type iterableType = types.asSuper(types.cvarUpperBound(tree.expr.type),
3476 syms.iterableType.tsym); 3476 syms.iterableType.tsym);
3477 if (iterableType.getTypeArguments().nonEmpty()) 3477 if (iterableType.getTypeArguments().nonEmpty())
3478 iteratorTarget = types.erasure(iterableType.getTypeArguments().head); 3478 iteratorTarget = types.erasure(iterableType.getTypeArguments().head);
3479 Type eType = tree.expr.type; 3479 Type eType = tree.expr.type;
3480 while (eType.hasTag(TYPEVAR)) { 3480 while (eType.hasTag(TYPEVAR)) {
3504 names.next, 3504 names.next,
3505 itvar.type, 3505 itvar.type,
3506 List.<Type>nil()); 3506 List.<Type>nil());
3507 JCExpression vardefinit = make.App(make.Select(make.Ident(itvar), next)); 3507 JCExpression vardefinit = make.App(make.Select(make.Ident(itvar), next));
3508 if (tree.var.type.isPrimitive()) 3508 if (tree.var.type.isPrimitive())
3509 vardefinit = make.TypeCast(types.upperBound(iteratorTarget), vardefinit); 3509 vardefinit = make.TypeCast(types.cvarUpperBound(iteratorTarget), vardefinit);
3510 else 3510 else
3511 vardefinit = make.TypeCast(tree.var.type, vardefinit); 3511 vardefinit = make.TypeCast(tree.var.type, vardefinit);
3512 JCVariableDecl indexDef = (JCVariableDecl)make.VarDef(tree.var.mods, 3512 JCVariableDecl indexDef = (JCVariableDecl)make.VarDef(tree.var.mods,
3513 tree.var.name, 3513 tree.var.name,
3514 tree.var.vartype, 3514 tree.var.vartype,

mercurial