[PATCH 06/40] Expression completer should not match explicit location options

Pedro Alves
2017-06-02T12:22:45Z

Currently, the expression completer matches explicit location options,
which would only make sense for commands that work with linespecs, not
expressions.

I.e., currently, this:
"p -functi"

Completes to:
"p -function "

This patch fixes that, and adds regression tests.

gdb/ChangeLog:
yyyy-mm-dd Pedro Alves <palves@redhat.com>

* completer.c (expression_completer): Call
linespec_location_completer instead of location_completer.

gdb/testsuite/ChangeLog:
yyyy-mm-dd Pedro Alves <palves@redhat.com>

* gdb.base/printcmds.exp: Add tests.
---
gdb/completer.c | 2 +-
gdb/testsuite/gdb.base/printcmds.exp | 6 ++++++
2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/gdb/completer.c b/gdb/completer.c
index 6acf115..ee587fb 100644
--- a/gdb/completer.c
+++ b/gdb/completer.c
@@ -643,7 +643,7 @@ expression_completer (struct cmd_list_element *ignore,
;

/* Not ideal but it is what we used to do before... */
- return location_completer (ignore, p, word);
+ return linespec_location_completer (ignore, text, word);
}

/* See definition in completer.h. */
diff --git a/gdb/testsuite/gdb.base/printcmds.exp b/gdb/testsuite/gdb.base/printcmds.exp
index d949b30..323ca73 100644
--- a/gdb/testsuite/gdb.base/printcmds.exp
+++ b/gdb/testsuite/gdb.base/printcmds.exp
@@ -931,6 +931,12 @@ gdb_test "ptype \"abc\"" " = char \\\[4\\\]"
gdb_test "print \$cvar = \"abc\"" " = \"abc\""
gdb_test "print sizeof (\$cvar)" " = 4"

+# GDB used to complete the explicit location options even when
+# printing expressions.
+gdb_test_no_output "complete p -function"
+gdb_test_no_output "complete p -line"
+gdb_test_no_output "complete p -source"
+
gdb_file_cmd ${binfile}

gdb_test "print \$pc" "No registers\\." "print \$pc (with file)"
--
2.5.5