From 223d921c6a17c037ba2d5276bc70e916df63827f Mon Sep 17 00:00:00 2001 From: Raphael Isemann Date: Thu, 26 Jul 2018 17:14:18 +0000 Subject: [PATCH] Fix duplicate suggestions after an ambiguous command Summary: 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. Reviewers: davide Reviewed By: davide Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D49866 llvm-svn: 338043 --- .../lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py | 2 +- lldb/source/Interpreter/CommandInterpreter.cpp | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py b/lldb/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py index dcfb434..c25f9af 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py @@ -26,7 +26,7 @@ class UnknownCommandTestCase(TestBase): 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): diff --git a/lldb/source/Interpreter/CommandInterpreter.cpp b/lldb/source/Interpreter/CommandInterpreter.cpp index 977c9ba..4c8b654 100644 --- a/lldb/source/Interpreter/CommandInterpreter.cpp +++ b/lldb/source/Interpreter/CommandInterpreter.cpp @@ -2932,8 +2932,6 @@ CommandInterpreter::ResolveCommandImpl(std::string &command_line, 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(); -- 2.7.4