diff options
-rw-r--r-- | src/expressions.c | 2 | ||||
-rw-r--r-- | tests/testsuite.at | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/expressions.c b/src/expressions.c index 25213e9..2424fb3 100644 --- a/src/expressions.c +++ b/src/expressions.c @@ -145,7 +145,7 @@ teco_expressions_push_calc(teco_operator_t op, GError **error) /* calculate if op has lower precedence than op on stack */ if (first >= 0 && teco_expressions_precedence(op) <= teco_expressions_precedence(teco_expressions_peek_op(first)) && - !teco_expressions_calc(error)) + !teco_expressions_eval(FALSE, error)) return FALSE; teco_expressions_push_op(op); diff --git a/tests/testsuite.at b/tests/testsuite.at index 59b1041..74df3a0 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -52,6 +52,12 @@ AT_SETUP([Missing left operand]) AT_CHECK([$SCITECO -e '+23='], 1, ignore, ignore) AT_CLEANUP +AT_SETUP([Operator precedence]) +AT_CHECK([$SCITECO -e "(1-6*5)+29\"N(0/0)'"], 0, ignore, ignore) +AT_CHECK([$SCITECO -e "(1-6*5-1)+30\"N(0/0)'"], 0, ignore, ignore) +AT_CHECK([$SCITECO -e "(1-6*5-1*2)+31\"N(0/0)'"], 0, ignore, ignore) +AT_CLEANUP + AT_SETUP([Closing loops at the correct macro level]) AT_CHECK([$SCITECO -e '@^Ua{>} <Ma'], 1, ignore, ignore) AT_CLEANUP |