Propagate the ExprResult::isConstant attribute.

This commit is contained in:
Roberto Raggi
2010-11-26 12:37:05 +01:00
parent fbbf8eefc1
commit 455429794c

View File

@@ -179,12 +179,14 @@ bool Semantic::visit(BinaryExpressionAST *ast)
{ {
ExprResult left = expression(ast->left); ExprResult left = expression(ast->left);
ExprResult right = expression(ast->right); ExprResult right = expression(ast->right);
_expr.isConstant = left.isConstant && right.isConstant;
return false; return false;
} }
bool Semantic::visit(UnaryExpressionAST *ast) bool Semantic::visit(UnaryExpressionAST *ast)
{ {
ExprResult expr = expression(ast->expr); ExprResult expr = expression(ast->expr);
_expr.isConstant = expr.isConstant;
return false; return false;
} }
@@ -193,6 +195,7 @@ bool Semantic::visit(TernaryExpressionAST *ast)
ExprResult first = expression(ast->first); ExprResult first = expression(ast->first);
ExprResult second = expression(ast->second); ExprResult second = expression(ast->second);
ExprResult third = expression(ast->third); ExprResult third = expression(ast->third);
_expr.isConstant = first.isConstant && second.isConstant && third.isConstant;
return false; return false;
} }