--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java Tue May 27 14:23:55 2014 -0400
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java Tue May 27 16:32:56 2014 -0600
@@ -3522,7 +3522,7 @@
private void visitIterableForeachLoop(JCEnhancedForLoop tree) {
make_at(tree.expr.pos());
Type iteratorTarget = syms.objectType;
- Type iterableType = types.asSuper(types.upperBound(tree.expr.type),
+ Type iterableType = types.asSuper(types.cvarUpperBound(tree.expr.type),
syms.iterableType.tsym);
if (iterableType.getTypeArguments().nonEmpty())
iteratorTarget = types.erasure(iterableType.getTypeArguments().head);
@@ -3556,7 +3556,7 @@
List.<Type>nil());
JCExpression vardefinit = make.App(make.Select(make.Ident(itvar), next));
if (tree.var.type.isPrimitive())
- vardefinit = make.TypeCast(types.upperBound(iteratorTarget), vardefinit);
+ vardefinit = make.TypeCast(types.cvarUpperBound(iteratorTarget), vardefinit);
else
vardefinit = make.TypeCast(tree.var.type, vardefinit);
JCVariableDecl indexDef = (JCVariableDecl)make.VarDef(tree.var.mods,