summaryrefslogtreecommitdiff
path: root/idlc
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2015-09-26 22:29:24 +0200
committerStephan Bergmann <sbergman@redhat.com>2015-09-28 08:12:13 +0200
commitcb31ea6981a336c16bc29ef2f0d323da9fb2dda4 (patch)
treec6848251e94d271f77e159928abf0e4076dfabd5 /idlc
parent6b3feb91b8c0d78e49c0b0bcb969879c980505be (diff)
AstExpression::eval_internal always returns m_exprValue
Change-Id: I214fb3d14cef07357860a88fae1652a7d1a282b0
Diffstat (limited to 'idlc')
-rw-r--r--idlc/inc/idlc/astexpression.hxx2
-rw-r--r--idlc/source/astexpression.cxx33
2 files changed, 17 insertions, 18 deletions
diff --git a/idlc/inc/idlc/astexpression.hxx b/idlc/inc/idlc/astexpression.hxx
index 32c8bc72e894..32364fabac02 100644
--- a/idlc/inc/idlc/astexpression.hxx
+++ b/idlc/inc/idlc/astexpression.hxx
@@ -122,7 +122,7 @@ private:
// Fill out the lineno, filename and definition scope details
void fillDefinitionDetails();
// Internal evaluation
- AstExprValue* eval_internal();
+ void eval_internal();
// Evaluate different sets of operators
AstExprValue* eval_bin_op();
AstExprValue* eval_bit_op();
diff --git a/idlc/source/astexpression.cxx b/idlc/source/astexpression.cxx
index 0fec297deee1..9e0469ae5d57 100644
--- a/idlc/source/astexpression.cxx
+++ b/idlc/source/astexpression.cxx
@@ -700,7 +700,7 @@ AstExprValue* AstExpression::coerce(ExprType t)
* First, evaluate it, then try to coerce result type
* If already evaluated, return the result
*/
- m_exprValue = eval_internal();
+ eval_internal();
if (m_exprValue == NULL)
return NULL;
@@ -760,7 +760,7 @@ AstExprValue* AstExpression::coerce(ExprType t)
void AstExpression::evaluate()
{
- m_exprValue = eval_internal();
+ eval_internal();
}
bool AstExpression::operator==(AstExpression *pExpr)
@@ -873,13 +873,13 @@ void AstExpression::fillDefinitionDetails()
m_fileName = idlc()->getFileName();
}
-AstExprValue* AstExpression::eval_internal()
+void AstExpression::eval_internal()
{
/*
* Already evaluated?
*/
if ( m_exprValue != NULL )
- return m_exprValue;
+ return;
/*
* OK, must evaluate operator
*/
@@ -891,27 +891,25 @@ AstExprValue* AstExpression::eval_internal()
case EC_div:
case EC_mod:
m_exprValue = eval_bin_op();
- return m_exprValue;
+ break;
case EC_or:
case EC_xor:
case EC_and:
case EC_left:
case EC_right:
m_exprValue = eval_bit_op();
- return m_exprValue;
+ break;
case EC_u_plus:
case EC_u_minus:
case EC_bit_neg:
m_exprValue = eval_un_op();
- return m_exprValue;
+ break;
case EC_symbol:
m_exprValue = eval_symbol();
- return m_exprValue;
+ break;
case EC_none:
- return NULL;
+ break;
}
-
- return NULL;
}
AstExprValue* AstExpression::eval_bin_op()
@@ -923,13 +921,13 @@ AstExprValue* AstExpression::eval_bin_op()
if (m_subExpr1 == NULL || m_subExpr2 == NULL)
return NULL;
- m_subExpr1->setExprValue(m_subExpr1->eval_internal());
+ m_subExpr1->eval_internal();
if (m_subExpr1->getExprValue() == NULL)
return NULL;
m_subExpr1->setExprValue(m_subExpr1->coerce(eType));
if (m_subExpr1->getExprValue() == NULL)
return NULL;
- m_subExpr2->setExprValue(m_subExpr2->eval_internal());
+ m_subExpr2->eval_internal();
if (m_subExpr2->getExprValue() == NULL)
return NULL;
m_subExpr2->setExprValue(m_subExpr2->coerce(eType));
@@ -971,13 +969,13 @@ AstExprValue* AstExpression::eval_bit_op()
{
if (m_subExpr1 == NULL || m_subExpr2 == NULL)
return NULL;
- m_subExpr1->setExprValue(m_subExpr1->eval_internal());
+ m_subExpr1->eval_internal();
if (m_subExpr1->getExprValue() == NULL)
return NULL;
m_subExpr1->setExprValue(m_subExpr1->coerce(ET_long));
if (m_subExpr1->getExprValue() == NULL)
return NULL;
- m_subExpr2->setExprValue(m_subExpr2->eval_internal());
+ m_subExpr2->eval_internal();
if (m_subExpr2->getExprValue() == NULL)
return NULL;
m_subExpr2->setExprValue(m_subExpr2->coerce(ET_long));
@@ -1018,7 +1016,7 @@ AstExprValue* AstExpression::eval_un_op()
if (m_subExpr1 == NULL)
return NULL;
- m_subExpr1->setExprValue(m_subExpr1->eval_internal());
+ m_subExpr1->eval_internal();
if (m_subExpr1->getExprValue() == NULL)
return NULL;
m_subExpr1->setExprValue(m_subExpr1->coerce(ET_double));
@@ -1099,7 +1097,8 @@ AstExprValue* AstExpression::eval_symbol()
* OK, now evaluate the constant we just got, to produce its value
*/
pConst = static_cast< AstConstant* >(pDecl);
- return pConst->getConstValue()->eval_internal();
+ pConst->getConstValue()->eval_internal();
+ return pConst->getConstValue()->getExprValue();
}
OString AstExpression::toString()