The commit
commit
733d554a4625db4ffb89b7a20e1cf27ab071ef4d
Author: Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
Date: Tue Oct 27 10:56:03 2020 +0100
gdb/breakpoint: add flags to 'condition' and 'break' commands to force condition
introduced the '-force-condition' flag to the 'break' command. This
flag was defined as a keyword like 'thread', 'task', and 'if'.
However, it starts with '-'. This difference caused an uncovered case
when tab-completing a seemingly complete linespec.
Below, we see "-force-condition" in the completion list, where both
the options and the keywords are listed:
(gdb) break -function main <TAB>
-force-condition -function -label -line -qualified
-source if task thread
But tab-completing '-' lists only options:
(gdb) break -function main -<TAB>
-function -label -line -qualified -source
This patch fixes the problem by adding keywords to the completion
list, so that we see:
(gdb) break -function main -<TAB>
-force-condition -function -label -line -qualified -source
gdb/ChangeLog:
2020-12-07 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
* completer.c (complete_explicit_location): Also add keywords
that start with '-' to the completion list.
gdb/testsuite/ChangeLog:
2020-12-07 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
* gdb.linespec/explicit.exp: Extend with a test to check completing
'-' after seemingly complete options.
+2020-12-07 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
+
+ * completer.c (complete_explicit_location): Also add keywords
+ that start with '-' to the completion list.
+
2020-12-07 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
* linespec.c (linespec_lexer_lex_keyword): The "-force-condition"
int keyword = skip_keyword (tracker, explicit_options, &text);
if (keyword == -1)
- complete_on_enum (tracker, explicit_options, text, text);
+ {
+ complete_on_enum (tracker, explicit_options, text, text);
+ /* There are keywords that start with "-". Include them, too. */
+ complete_on_enum (tracker, linespec_keywords, text, text);
+ }
else
{
/* Completing on value. */
+2020-12-07 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
+
+ * gdb.linespec/explicit.exp: Extend with a test to check completing
+ '-' after seemingly complete options.
+
2020-12-07 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
* gdb.linespec/keywords.exp: Add tests to check positional
}
}
+ # Test that after a seemingly finished option argument,
+ # completion for "-" matches both the explicit location
+ # options and the linespec keywords that start with "-".
+ with_test_prefix "complete '-' after options" {
+ test_gdb_complete_multiple "b -function myfunction " "-" "" {
+ "-force-condition"
+ "-function"
+ "-label"
+ "-line"
+ "-qualified"
+ "-source"
+ }
+ }
+
# Tests that ensure that after "if" we complete on expressions
# are in cpcompletion.exp.