Tab completion for breakpoint write and breakpoint name add/delete
authorGongyu Deng <gy_deng@icloud.com>
Mon, 11 May 2020 13:54:13 +0000 (15:54 +0200)
committerRaphael Isemann <teemperor@gmail.com>
Mon, 11 May 2020 13:55:11 +0000 (15:55 +0200)
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

lldb/source/Commands/CommandObjectBreakpoint.cpp
lldb/test/API/functionalities/completion/TestCompletion.py

index 11cded6..fbd96c2 100644 (file)
@@ -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 {
index 3a9c30a..a53ade5 100644 (file)
@@ -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: