diff -r 5c9cdeb740f2 -r 8973372aedf8 src/share/classes/com/sun/tools/javac/comp/Lower.java --- a/src/share/classes/com/sun/tools/javac/comp/Lower.java Thu Jul 24 19:06:57 2008 +0100 +++ b/src/share/classes/com/sun/tools/javac/comp/Lower.java Fri Jul 25 12:05:43 2008 +0100 @@ -2944,8 +2944,10 @@ itvar.type, List.nil()); JCExpression vardefinit = make.App(make.Select(make.Ident(itvar), next)); - if (iteratorTarget != syms.objectType) - vardefinit = make.TypeCast(iteratorTarget, vardefinit); + if (tree.var.type.isPrimitive()) + vardefinit = make.TypeCast(types.upperBound(iteratorTarget), vardefinit); + else + vardefinit = make.TypeCast(tree.var.type, vardefinit); JCVariableDecl indexDef = (JCVariableDecl)make.VarDef(tree.var.mods, tree.var.name, tree.var.vartype,