[Core] Fix #15558: Direct expression in ternary operator (#22938)

* [Core] Fix #15558: Direct expression in ternary operator

* [Core] Added tests for Non-Numeric conditions in ternary op.

* [Core] prevent relational operator chains at grammar level.

* [Core] Rewrite expressions grammar as a layered grammar.

* [Core] Revert to left associative relops (like C/C++) plus tests.
This commit is contained in:
Frank David Martínez M
2025-08-25 14:52:42 -05:00
committed by GitHub
parent 0805164677
commit 0f2ea5588c
5 changed files with 565 additions and 464 deletions

View File

@@ -3264,7 +3264,7 @@ Expression *ConditionalExpression::simplify() const
if (!v)
return new ConditionalExpression(owner, condition->simplify(), trueExpr->simplify(), falseExpr->simplify());
else {
if (fabs(v->getValue()) > 0.5)
if (fabs(v->getValue()) >= Base::Precision::Confusion())
return trueExpr->simplify();
else
return falseExpr->simplify();