Pass void_context_p to parse_expression
authorTom Tromey <tromey@adacore.com>
Fri, 8 Jan 2021 19:20:12 +0000 (12:20 -0700)
committerTom Tromey <tromey@adacore.com>
Fri, 8 Jan 2021 19:20:43 +0000 (12:20 -0700)
commit8fc48b79618af335d6cea1d1d149668340298b81
treefff5e183fda0fd399702add8a0257b6d36440090
parent6abd4cf281deda4b1eb2d569a2729a485105e553
Pass void_context_p to parse_expression

An earlier patch pointed out that nothing in GDB sets void_context_p
when parsing an expression.  This patch fixes this omission.

"print" and "call" differ in that the former will print a value that
has void type, while the latter will not.  AdaCore has had a patch for
a long time that uses this distinction to help with overload
resolution.  In particular, in a "call" context, a procedure will be
chosen, while in a "print" context, a zero-argument function will be
chosen instead.

Regression tested on x86-64 Fedora 32.

gdb/ChangeLog
2021-01-08  Tom Tromey  <tromey@adacore.com>

* parse.c (parse_expression): Add void_context_p parameter.  Use
parse_exp_in_context.
* printcmd.c (print_command_1): Change voidprint to bool.  Pass to
parse_expression.
(print_command, call_command): Update.
* expression.h (parse_expression): Add void_context_p parameter.

gdb/testsuite/ChangeLog
2021-01-08  Tom Tromey  <tromey@adacore.com>

* gdb.ada/voidctx/pck.adb: New file.
* gdb.ada/voidctx/pck.ads: New file.
* gdb.ada/voidctx/voidctx.adb: New file.
* gdb.ada/voidctx.exp: New file.
gdb/ChangeLog
gdb/expression.h
gdb/parse.c
gdb/printcmd.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.ada/voidctx.exp [new file with mode: 0644]
gdb/testsuite/gdb.ada/voidctx/pck.adb [new file with mode: 0644]
gdb/testsuite/gdb.ada/voidctx/pck.ads [new file with mode: 0644]
gdb/testsuite/gdb.ada/voidctx/voidctx.adb [new file with mode: 0644]