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

changeset 1696
c2315af9cc28
parent 1690
76537856a54e
child 1785
92e420e9807d
     1.1 --- a/src/share/classes/com/sun/tools/javac/comp/TransTypes.java	Mon Apr 15 14:16:05 2013 +0100
     1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/TransTypes.java	Mon Apr 15 14:17:30 2013 +0100
     1.3 @@ -710,8 +710,18 @@
     1.4  
     1.5      public void visitTypeCast(JCTypeCast tree) {
     1.6          tree.clazz = translate(tree.clazz, null);
     1.7 +        Type originalTarget = tree.type;
     1.8          tree.type = erasure(tree.type);
     1.9          tree.expr = translate(tree.expr, tree.type);
    1.10 +        if (originalTarget.isCompound()) {
    1.11 +            Type.IntersectionClassType ict = (Type.IntersectionClassType)originalTarget;
    1.12 +            for (Type c : ict.getExplicitComponents()) {
    1.13 +                Type ec = erasure(c);
    1.14 +                if (!types.isSameType(ec, tree.type)) {
    1.15 +                    tree.expr = coerce(tree.expr, ec);
    1.16 +                }
    1.17 +            }
    1.18 +        }
    1.19          result = tree;
    1.20      }
    1.21  

mercurial