Parens in ConstantExpr follow original interface
Parens are only printed in constant expressions if the original
expression contained them.
Bug: 137553653
Test: hidl-gen -Lformat android.hardware.radio@1.4 (or similar
interface)
Change-Id: I65c009a4e2dc8d83586070d5165ee70d3d5756da
diff --git a/ConstantExpression.cpp b/ConstantExpression.cpp
index 6badf57..9413c9a 100644
--- a/ConstantExpression.cpp
+++ b/ConstantExpression.cpp
@@ -674,12 +674,16 @@
mIsPostParseCompleted = true;
}
+void ConstantExpression::surroundWithParens() {
+ mExpr = "(" + mExpr + ")";
+}
+
std::vector<const ConstantExpression*> LiteralConstantExpression::getConstantExpressions() const {
return {};
}
UnaryConstantExpression::UnaryConstantExpression(const std::string& op, ConstantExpression* value)
- : ConstantExpression(std::string("(") + op + value->mExpr + ")"), mUnary(value), mOp(op) {}
+ : ConstantExpression(op + value->mExpr), mUnary(value), mOp(op) {}
std::vector<const ConstantExpression*> UnaryConstantExpression::getConstantExpressions() const {
return {mUnary};
@@ -687,7 +691,7 @@
BinaryConstantExpression::BinaryConstantExpression(ConstantExpression* lval, const std::string& op,
ConstantExpression* rval)
- : ConstantExpression(std::string("(") + lval->mExpr + " " + op + " " + rval->mExpr + ")"),
+ : ConstantExpression(lval->mExpr + " " + op + " " + rval->mExpr),
mLval(lval),
mRval(rval),
mOp(op) {}
@@ -699,8 +703,7 @@
TernaryConstantExpression::TernaryConstantExpression(ConstantExpression* cond,
ConstantExpression* trueVal,
ConstantExpression* falseVal)
- : ConstantExpression(std::string("(") + cond->mExpr + "?" + trueVal->mExpr + ":" +
- falseVal->mExpr + ")"),
+ : ConstantExpression(cond->mExpr + "?" + trueVal->mExpr + ":" + falseVal->mExpr),
mCond(cond),
mTrueVal(trueVal),
mFalseVal(falseVal) {}