Add completion for Ada catch commands

This patch adds a completion function to the "catch exception"
and "catch handlers" commands.

Tested on x86-64 Fedora 29; reviewed off-list by Joel.

gdb/ChangeLog
2019-05-10  Tom Tromey  <tromey@adacore.com>

	* ada-lang.c (catch_ada_completer): New function.
	(_initialize_ada_language): Use it.

gdb/testsuite/ChangeLog
2019-05-10  Tom Tromey  <tromey@adacore.com>

	* gdb.ada/info_exc.exp: Add "complete" test.
This commit is contained in:
Tom Tromey 2019-05-03 17:03:40 -06:00
parent b8e07335d0
commit 71bed2dba6
4 changed files with 31 additions and 2 deletions

View file

@ -1,3 +1,8 @@
2019-05-10 Tom Tromey <tromey@adacore.com>
* ada-lang.c (catch_ada_completer): New function.
(_initialize_ada_language): Use it.
2019-05-10 Tom Tromey <tromey@adacore.com> 2019-05-10 Tom Tromey <tromey@adacore.com>
* thread.c (print_thread_info): Make "requested_threads" const. * thread.c (print_thread_info): Make "requested_threads" const.

View file

@ -13342,6 +13342,22 @@ catch_ada_handlers_command (const char *arg_entry, int from_tty,
from_tty); from_tty);
} }
/* Completion function for the Ada "catch" commands. */
static void
catch_ada_completer (struct cmd_list_element *cmd, completion_tracker &tracker,
const char *text, const char *word)
{
std::vector<ada_exc_info> exceptions = ada_exceptions_list (NULL);
for (const ada_exc_info &info : exceptions)
{
if (startswith (info.name, word))
tracker.add_completion
(gdb::unique_xmalloc_ptr<char> (xstrdup (info.name)));
}
}
/* Split the arguments specified in a "catch assert" command. /* Split the arguments specified in a "catch assert" command.
ARGS contains the command's arguments (or the empty string if ARGS contains the command's arguments (or the empty string if
@ -14562,7 +14578,7 @@ termination).\n\
Otherwise, the catchpoint only stops when the name of the exception being\n\ Otherwise, the catchpoint only stops when the name of the exception being\n\
raised is the same as ARG."), raised is the same as ARG."),
catch_ada_exception_command, catch_ada_exception_command,
NULL, catch_ada_completer,
CATCH_PERMANENT, CATCH_PERMANENT,
CATCH_TEMPORARY); CATCH_TEMPORARY);
@ -14570,7 +14586,7 @@ raised is the same as ARG."),
Catch Ada exceptions, when handled.\n\ Catch Ada exceptions, when handled.\n\
With an argument, catch only exceptions with the given name."), With an argument, catch only exceptions with the given name."),
catch_ada_handlers_command, catch_ada_handlers_command,
NULL, catch_ada_completer,
CATCH_PERMANENT, CATCH_PERMANENT,
CATCH_TEMPORARY); CATCH_TEMPORARY);
add_catch_command ("assert", _("\ add_catch_command ("assert", _("\

View file

@ -1,3 +1,7 @@
2019-05-10 Tom Tromey <tromey@adacore.com>
* gdb.ada/info_exc.exp: Add "complete" test.
2019-05-09 Tom de Vries <tdevries@suse.de> 2019-05-09 Tom de Vries <tdevries@suse.de>
* gdb.arch/amd64-tailcall-self.S: Make DW_FORM_ref4 references * gdb.arch/amd64-tailcall-self.S: Make DW_FORM_ref4 references

View file

@ -49,3 +49,7 @@ gdb_test "info exceptions const.aint" \
"constraint_error: $hex" \ "constraint_error: $hex" \
"const.aint_global_gdb_e: $hex"] "const.aint_global_gdb_e: $hex"]
foreach cmd {exception handlers} {
gdb_test "complete catch $cmd const.a" \
"catch $cmd const.aint_global_gdb_e"
}