langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java
changeset 28339 fa0685d84b74
parent 28337 0b46fb7be75a
child 28800 35f9042d53b3
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java	Fri Jan 09 15:50:22 2015 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java	Fri Jan 09 15:51:20 2015 +0000
@@ -755,7 +755,15 @@
         tree.clazz = translate(tree.clazz, null);
         Type originalTarget = tree.type;
         tree.type = erasure(tree.type);
-        tree.expr = translate(tree.expr, erasure(tree.expr.type));
+        JCExpression newExpression = translate(tree.expr, erasure(tree.expr.type));
+        if (newExpression != tree.expr) {
+            JCTypeCast typeCast = newExpression.hasTag(Tag.TYPECAST)
+                ? (JCTypeCast) newExpression
+                : null;
+            tree.expr = typeCast != null && types.isSameType(typeCast.type, originalTarget, true)
+                ? typeCast.expr
+                : newExpression;
+        }
         if (originalTarget.isCompound()) {
             Type.IntersectionClassType ict = (Type.IntersectionClassType)originalTarget;
             for (Type c : ict.getExplicitComponents()) {