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

changeset 1785
92e420e9807d
parent 1696
c2315af9cc28
child 1792
ec871c3e8337
equal deleted inserted replaced
1784:d042cba65eab 1785:92e420e9807d
170 * expression's original type. 170 * expression's original type.
171 */ 171 */
172 JCExpression retype(JCExpression tree, Type erasedType, Type target) { 172 JCExpression retype(JCExpression tree, Type erasedType, Type target) {
173 // System.err.println("retype " + tree + " to " + erasedType);//DEBUG 173 // System.err.println("retype " + tree + " to " + erasedType);//DEBUG
174 if (!erasedType.isPrimitive()) { 174 if (!erasedType.isPrimitive()) {
175 if (target != null && target.isPrimitive()) 175 if (target != null && target.isPrimitive()) {
176 target = erasure(tree.type); 176 target = erasure(tree.type);
177 }
177 tree.type = erasedType; 178 tree.type = erasedType;
178 if (target != null) return coerce(tree, target); 179 if (target != null) {
180 return coerce(tree, target);
181 }
179 } 182 }
180 return tree; 183 return tree;
181 } 184 }
182 185
183 /** Translate method argument list, casting each argument 186 /** Translate method argument list, casting each argument
684 } 687 }
685 688
686 public void visitAssign(JCAssign tree) { 689 public void visitAssign(JCAssign tree) {
687 tree.lhs = translate(tree.lhs, null); 690 tree.lhs = translate(tree.lhs, null);
688 tree.rhs = translate(tree.rhs, erasure(tree.lhs.type)); 691 tree.rhs = translate(tree.rhs, erasure(tree.lhs.type));
689 tree.type = erasure(tree.type); 692 tree.type = erasure(tree.lhs.type);
690 result = tree; 693 result = retype(tree, tree.type, pt);
691 } 694 }
692 695
693 public void visitAssignop(JCAssignOp tree) { 696 public void visitAssignop(JCAssignOp tree) {
694 tree.lhs = translate(tree.lhs, null); 697 tree.lhs = translate(tree.lhs, null);
695 tree.rhs = translate(tree.rhs, tree.operator.type.getParameterTypes().tail.head); 698 tree.rhs = translate(tree.rhs, tree.operator.type.getParameterTypes().tail.head);

mercurial