[Lldb-commits] [PATCH] D49866: Fix duplicate suggestions after an ambiguous command

Raphael Isemann via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Jul 26 10:07:35 PDT 2018


teemperor created this revision.

So far lldb is printing this when it finds an ambiguous command:

  (lldb) g
  Ambiguous command 'g'. Possible matches:
          gdb-remote
          gui
          gdb-remote
          gui

The duplicates come from the fact that we call the same query twice with the same parameters
and add it to the same list. This patch just removes the second query call to `GetCommandObject`.

As `GetCommandObject` is const and the name parameter is also not modified, this shouldn't break
anything else. I didn't merge the remaining if statement into the else as I think otherwise the
`if obj==nullptr do X else Y` pattern in there becomes hard to recognize.


https://reviews.llvm.org/D49866

Files:
  packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
  source/Interpreter/CommandInterpreter.cpp


Index: source/Interpreter/CommandInterpreter.cpp
===================================================================
--- source/Interpreter/CommandInterpreter.cpp
+++ source/Interpreter/CommandInterpreter.cpp
@@ -2932,8 +2932,6 @@
           actual_cmd_name_len = cmd_obj->GetCommandName().size();
         }
       } else {
-        if (!cmd_obj)
-          cmd_obj = GetCommandObject(next_word, &matches);
         if (cmd_obj) {
           llvm::StringRef cmd_name = cmd_obj->GetCommandName();
           actual_cmd_name_len += cmd_name.size();
Index: packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
===================================================================
--- packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
+++ packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py
@@ -26,7 +26,7 @@
         self.assertRegexpMatches(result.GetError(), "Ambiguous command 'g'. Possible matches:")
         self.assertRegexpMatches(result.GetError(), "gui")
         self.assertRegexpMatches(result.GetError(), "gdb-remote")
-        # FIXME: Somehow we get 'gui' and 'gdb-remote' twice in the output.
+        self.assertEquals(1, result.GetError().count("gdb-remote"))
 
     @no_debug_info_test
     def test_unknown_command(self):


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D49866.157518.patch
Type: text/x-patch
Size: 1332 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20180726/ff506c8c/attachment.bin>


More information about the lldb-commits mailing list