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

changeset 1687
a4be2c2fe0a1
parent 1646
a4913ea9bb62
child 1755
ddb4a2bfcd82
     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,

mercurial