From e87362e6894e052456c645129ac570f6bc23e8d1 Mon Sep 17 00:00:00 2001 From: Gongyu Deng Date: Mon, 11 May 2020 15:54:13 +0200 Subject: [PATCH] Tab completion for breakpoint write and breakpoint name add/delete Summary: Apply the common completion created in [[ https://reviews.llvm.org/D75418 | Revision D75418 ]] to the commands `breakpoint write` and `breakpoint name add/delete`. Reviewers: teemperor, JDevlieghere Reviewed By: teemperor Tags: #lldb Differential Revision: https://reviews.llvm.org/D79686 --- .../Commands/CommandObjectBreakpoint.cpp | 24 +++++++++++++++++++ .../completion/TestCompletion.py | 6 ++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/lldb/source/Commands/CommandObjectBreakpoint.cpp b/lldb/source/Commands/CommandObjectBreakpoint.cpp index 11cded687913..fbd96c2c5ef5 100644 --- a/lldb/source/Commands/CommandObjectBreakpoint.cpp +++ b/lldb/source/Commands/CommandObjectBreakpoint.cpp @@ -1770,6 +1770,14 @@ public: ~CommandObjectBreakpointNameAdd() override = default; + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { + CommandCompletions::InvokeCommonCompletionCallbacks( + GetCommandInterpreter(), CommandCompletions::eBreakpointCompletion, + request, nullptr); + } + Options *GetOptions() override { return &m_option_group; } protected: @@ -1849,6 +1857,14 @@ public: ~CommandObjectBreakpointNameDelete() override = default; + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { + CommandCompletions::InvokeCommonCompletionCallbacks( + GetCommandInterpreter(), CommandCompletions::eBreakpointCompletion, + request, nullptr); + } + Options *GetOptions() override { return &m_option_group; } protected: @@ -2147,6 +2163,14 @@ public: ~CommandObjectBreakpointWrite() override = default; + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { + CommandCompletions::InvokeCommonCompletionCallbacks( + GetCommandInterpreter(), CommandCompletions::eBreakpointCompletion, + request, nullptr); + } + Options *GetOptions() override { return &m_options; } class CommandOptions : public Options { diff --git a/lldb/test/API/functionalities/completion/TestCompletion.py b/lldb/test/API/functionalities/completion/TestCompletion.py index 3a9c30a3e62a..a53ade542f46 100644 --- a/lldb/test/API/functionalities/completion/TestCompletion.py +++ b/lldb/test/API/functionalities/completion/TestCompletion.py @@ -478,10 +478,10 @@ class CommandLineCompletionTestCase(TestBase): self.complete_from_to('register write rbx ', []) - def test_breakpoint_enable_disable_delete_modify_with_ids(self): - """These four breakpoint subcommands should be completed with a list of breakpoint ids""" + def test_complete_breakpoint_with_ids(self): + """These breakpoint subcommands should be completed with a list of breakpoint ids""" - subcommands = ['enable', 'disable', 'delete', 'modify'] + subcommands = ['enable', 'disable', 'delete', 'modify', 'name add', 'name delete', 'write'] # The tab completion here is unavailable without a target for subcommand in subcommands: