equal
deleted
inserted
replaced
3444 Type iteratorTarget = syms.objectType; |
3444 Type iteratorTarget = syms.objectType; |
3445 Type iterableType = types.asSuper(types.cvarUpperBound(tree.expr.type), |
3445 Type iterableType = types.asSuper(types.cvarUpperBound(tree.expr.type), |
3446 syms.iterableType.tsym); |
3446 syms.iterableType.tsym); |
3447 if (iterableType.getTypeArguments().nonEmpty()) |
3447 if (iterableType.getTypeArguments().nonEmpty()) |
3448 iteratorTarget = types.erasure(iterableType.getTypeArguments().head); |
3448 iteratorTarget = types.erasure(iterableType.getTypeArguments().head); |
3449 Type eType = tree.expr.type; |
3449 Type eType = types.skipTypeVars(tree.expr.type, false); |
3450 while (eType.hasTag(TYPEVAR)) { |
|
3451 eType = eType.getUpperBound(); |
|
3452 } |
|
3453 tree.expr.type = types.erasure(eType); |
3450 tree.expr.type = types.erasure(eType); |
3454 if (eType.isCompound()) |
3451 if (eType.isCompound()) |
3455 tree.expr = make.TypeCast(types.erasure(iterableType), tree.expr); |
3452 tree.expr = make.TypeCast(types.erasure(iterableType), tree.expr); |
3456 Symbol iterator = lookupMethod(tree.expr.pos(), |
3453 Symbol iterator = lookupMethod(tree.expr.pos(), |
3457 names.iterator, |
3454 names.iterator, |