diff options
author | Tom Tromey <tromey@adacore.com> | 2019-05-03 17:03:40 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2019-05-10 09:57:42 -0600 |
commit | 71bed2dba6c0706633ead4994cc89e063abf28ea (patch) | |
tree | 12f71d62fde277264cba623d07ca398ff241b236 | |
parent | b8e07335d04f8c8e611a65905598915f68b0b707 (diff) | |
download | binutils-71bed2dba6c0706633ead4994cc89e063abf28ea.zip binutils-71bed2dba6c0706633ead4994cc89e063abf28ea.tar.gz binutils-71bed2dba6c0706633ead4994cc89e063abf28ea.tar.bz2 |
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.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/ada-lang.c | 20 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/info_exc.exp | 4 |
4 files changed, 31 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 82d6206..f1c39a4 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 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> + * thread.c (print_thread_info): Make "requested_threads" const. * gdbthread.h (print_thread_info): Make "requested_threads" const. diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index e513280..dee3a83 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -13342,6 +13342,22 @@ catch_ada_handlers_command (const char *arg_entry, int 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. 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\ raised is the same as ARG."), catch_ada_exception_command, - NULL, + catch_ada_completer, CATCH_PERMANENT, CATCH_TEMPORARY); @@ -14570,7 +14586,7 @@ raised is the same as ARG."), Catch Ada exceptions, when handled.\n\ With an argument, catch only exceptions with the given name."), catch_ada_handlers_command, - NULL, + catch_ada_completer, CATCH_PERMANENT, CATCH_TEMPORARY); add_catch_command ("assert", _("\ diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 867dc87..252a183 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -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> * gdb.arch/amd64-tailcall-self.S: Make DW_FORM_ref4 references diff --git a/gdb/testsuite/gdb.ada/info_exc.exp b/gdb/testsuite/gdb.ada/info_exc.exp index 9a11709..48bd2cd 100644 --- a/gdb/testsuite/gdb.ada/info_exc.exp +++ b/gdb/testsuite/gdb.ada/info_exc.exp @@ -49,3 +49,7 @@ gdb_test "info exceptions const.aint" \ "constraint_error: $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" +} |