Fix unary + in Ada
My previous Ada patches introduced a bug that I found after checkin. I had incorrectly implemented unary +. There was a test for the overloaded case, but no test for the ordinary case. This patch adds the tests and fixes the bug. Tested on x86-64 Fedora 32. gdb/ChangeLog 2021-03-15 Tom Tromey <tromey@adacore.com> * ada-exp.y (simple_exp): Always push a result for unary '+'. gdb/testsuite/ChangeLog 2021-03-15 Tom Tromey <tromey@adacore.com> * gdb.ada/fixed_points.exp: Add tests of unary + and -.
This commit is contained in:
parent
3b5c4de0cf
commit
6813ceb03f
@ -1,3 +1,7 @@
|
|||||||
|
2021-03-15 Tom Tromey <tromey@adacore.com>
|
||||||
|
|
||||||
|
* ada-exp.y (simple_exp): Always push a result for unary '+'.
|
||||||
|
|
||||||
2021-03-15 Tom Tromey <tromey@adacore.com>
|
2021-03-15 Tom Tromey <tromey@adacore.com>
|
||||||
|
|
||||||
* ada-lang.c (ada_unop_ind_operation::evaluate): Call
|
* ada-lang.c (ada_unop_ind_operation::evaluate): Call
|
||||||
|
@ -589,12 +589,14 @@ simple_exp : '+' simple_exp %prec UNARY
|
|||||||
operation_up arg = ada_pop ();
|
operation_up arg = ada_pop ();
|
||||||
operation_up empty;
|
operation_up empty;
|
||||||
|
|
||||||
/* We only need to handle the overloading
|
/* If an overloaded operator was found, use
|
||||||
case here, not anything else. */
|
it. Otherwise, unary + has no effect and
|
||||||
|
the argument can be pushed instead. */
|
||||||
operation_up call = maybe_overload (UNOP_PLUS, arg,
|
operation_up call = maybe_overload (UNOP_PLUS, arg,
|
||||||
empty);
|
empty);
|
||||||
if (call != nullptr)
|
if (call != nullptr)
|
||||||
pstate->push (std::move (call));
|
arg = std::move (call);
|
||||||
|
pstate->push (std::move (arg));
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2021-03-15 Tom Tromey <tromey@adacore.com>
|
||||||
|
|
||||||
|
* gdb.ada/fixed_points.exp: Add tests of unary + and -.
|
||||||
|
|
||||||
2021-03-15 Tom Tromey <tromey@adacore.com>
|
2021-03-15 Tom Tromey <tromey@adacore.com>
|
||||||
|
|
||||||
* gdb.ada/varsize_limit.exp: Add new test.
|
* gdb.ada/varsize_limit.exp: Add new test.
|
||||||
|
@ -76,6 +76,11 @@ foreach_with_prefix scenario {all minimal} {
|
|||||||
gdb_test "print fp2_var - 0" \
|
gdb_test "print fp2_var - 0" \
|
||||||
" = -0.01"
|
" = -0.01"
|
||||||
|
|
||||||
|
gdb_test "print + fp2_var" \
|
||||||
|
" = -0.01"
|
||||||
|
gdb_test "print - fp2_var" \
|
||||||
|
" = 0.01"
|
||||||
|
|
||||||
set fp4 "= 2e-07"
|
set fp4 "= 2e-07"
|
||||||
gdb_test "print fp4_var" $fp4
|
gdb_test "print fp4_var" $fp4
|
||||||
gdb_test "print fp4_var * 1" $fp4
|
gdb_test "print fp4_var * 1" $fp4
|
||||||
|
Loading…
Reference in New Issue
Block a user