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
This commit is contained in:
Raphael Isemann 2018-07-26 17:14:18 +00:00
parent 279621fbf0
commit 223d921c6a
2 changed files with 1 additions and 3 deletions

View File

@ -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):

View File

@ -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();