From 1475f08013fd274fe483461b3c49a50ec825df7d Mon Sep 17 00:00:00 2001 From: Minero Aoki Date: Sat, 1 Mar 2008 11:06:36 +0000 Subject: [PATCH] * net/loveruby/cflat/compiler/TypeChecker.java: use (new) CastNode constructor directly. * net/loveruby/cflat/ast/CastNode.java: new constructor. git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3925 1b9489fe-b721-0410-924e-b54b9192deb8 --- ChangeLog | 7 +++++++ net/loveruby/cflat/ast/CastNode.java | 4 ++++ net/loveruby/cflat/compiler/TypeChecker.java | 18 +++++++----------- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 65d4fae..6a3e2b4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Sat Mar 1 20:06:33 2008 Minero Aoki + + * net/loveruby/cflat/compiler/TypeChecker.java: use (new) CastNode + constructor directly. + + * net/loveruby/cflat/ast/CastNode.java: new constructor. + Sun Feb 24 23:40:15 2008 Minero Aoki * net/loveruby/cflat/compiler/TypeChecker.java: implement usual diff --git a/net/loveruby/cflat/ast/CastNode.java b/net/loveruby/cflat/ast/CastNode.java index f9df3d8..8fe9e2a 100644 --- a/net/loveruby/cflat/ast/CastNode.java +++ b/net/loveruby/cflat/ast/CastNode.java @@ -6,6 +6,10 @@ public class CastNode extends ExprNode { protected TypeNode typeNode; protected ExprNode expr; + public CastNode(Type t, ExprNode expr) { + this(new TypeNode(t), expr); + } + public CastNode(TypeNode t, ExprNode expr) { this.typeNode = t; this.expr = expr; diff --git a/net/loveruby/cflat/compiler/TypeChecker.java b/net/loveruby/cflat/compiler/TypeChecker.java index bb126d0..2fc1d9a 100644 --- a/net/loveruby/cflat/compiler/TypeChecker.java +++ b/net/loveruby/cflat/compiler/TypeChecker.java @@ -154,7 +154,7 @@ class TypeChecker extends Visitor { if (! mustBeInteger(node.rhs(), node.operator())) return; Type t = integralPromotion(node.rhs().type()); if (! t.isSameType(node.rhs().type())) { - node.setRHS(newCastNode(t, node.rhs())); + node.setRHS(new CastNode(t, node.rhs())); } return; } @@ -170,7 +170,7 @@ class TypeChecker extends Visitor { } if (! r.isSameType(opType)) { // cast RHS - node.setRHS(newCastNode(opType, node.rhs())); + node.setRHS(new CastNode(opType, node.rhs())); } } @@ -199,10 +199,10 @@ class TypeChecker extends Visitor { return; } else if (t.isCompatible(e)) { // insert cast on thenBody - node.setThenExpr(newCastNode(e, node.thenExpr())); + node.setThenExpr(new CastNode(e, node.thenExpr())); } else if (e.isCompatible(t)) { // insert cast on elseBody - node.setElseExpr(newCastNode(t, node.elseExpr())); + node.setElseExpr(new CastNode(t, node.elseExpr())); } else { invalidCastError(node.thenExpr(), e, t); @@ -307,11 +307,11 @@ class TypeChecker extends Visitor { Type target = usualArithmeticConversion(l, r); if (! l.isSameType(target)) { // insert cast on left expr - node.setLeft(newCastNode(target, node.left())); + node.setLeft(new CastNode(target, node.left())); } if (! r.isSameType(target)) { // insert cast on right expr - node.setRight(newCastNode(target, node.right())); + node.setRight(new CastNode(target, node.right())); } node.setType(target); } @@ -425,7 +425,7 @@ class TypeChecker extends Visitor { warn(expr, "incompatible implicit cast from " + expr.type() + " to " + targetType); } - return newCastNode(targetType, expr); + return new CastNode(targetType, expr); } else { invalidCastError(expr, expr.type(), targetType); @@ -476,10 +476,6 @@ class TypeChecker extends Visitor { } // #@@} - protected CastNode newCastNode(Type t, ExprNode n) { - return new CastNode(new TypeNode(t), n); - } - protected boolean isInvalidReturnType(Type t) { return t.isStruct() || t.isUnion() || t.isArray(); }