1.1 --- a/src/share/classes/com/sun/tools/javac/comp/Lower.java Tue Apr 09 14:18:22 2013 -0700 1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Lower.java Wed Apr 10 12:31:02 2013 +0100 1.3 @@ -48,6 +48,7 @@ 1.4 import static com.sun.tools.javac.code.TypeTag.*; 1.5 import static com.sun.tools.javac.jvm.ByteCodes.*; 1.6 import static com.sun.tools.javac.tree.JCTree.Tag.*; 1.7 +import javax.lang.model.type.TypeKind; 1.8 1.9 /** This pass translates away some syntactic sugar: inner classes, 1.10 * class literals, assertions, foreach loops, etc. 1.11 @@ -3400,8 +3401,11 @@ 1.12 if (iterableType.getTypeArguments().nonEmpty()) 1.13 iteratorTarget = types.erasure(iterableType.getTypeArguments().head); 1.14 Type eType = tree.expr.type; 1.15 + while (eType.hasTag(TYPEVAR)) { 1.16 + eType = eType.getUpperBound(); 1.17 + } 1.18 tree.expr.type = types.erasure(eType); 1.19 - if (eType.hasTag(TYPEVAR) && eType.getUpperBound().isCompound()) 1.20 + if (eType.isCompound()) 1.21 tree.expr = make.TypeCast(types.erasure(iterableType), tree.expr); 1.22 Symbol iterator = lookupMethod(tree.expr.pos(), 1.23 names.iterator,