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>
|
||||
|
||||
* 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 empty;
|
||||
|
||||
/* We only need to handle the overloading
|
||||
case here, not anything else. */
|
||||
/* If an overloaded operator was found, use
|
||||
it. Otherwise, unary + has no effect and
|
||||
the argument can be pushed instead. */
|
||||
operation_up call = maybe_overload (UNOP_PLUS, arg,
|
||||
empty);
|
||||
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>
|
||||
|
||||
* gdb.ada/varsize_limit.exp: Add new test.
|
||||
|
@ -76,6 +76,11 @@ foreach_with_prefix scenario {all minimal} {
|
||||
gdb_test "print fp2_var - 0" \
|
||||
" = -0.01"
|
||||
|
||||
gdb_test "print + fp2_var" \
|
||||
" = -0.01"
|
||||
gdb_test "print - fp2_var" \
|
||||
" = 0.01"
|
||||
|
||||
set fp4 "= 2e-07"
|
||||
gdb_test "print fp4_var" $fp4
|
||||
gdb_test "print fp4_var * 1" $fp4
|
||||
|
Loading…
Reference in New Issue
Block a user