================ @@ -32,90 +47,146 @@ def test_completions(self): breakpoint2_line = line_number(source, "// breakpoint 2") self.set_source_breakpoints(source, [breakpoint1_line, breakpoint2_line]) + + + def test_command_completions(self): + """ + Tests completion requests for lldb commands, within "repl-mode=command" + """ + self.setup_debugee() self.continue_to_next_stop() - # shouldn't see variables inside main + res = self.dap_server.request_evaluate("`lldb-dap repl-mode command", context="repl") + self.assertTrue(res["success"]) + + # Provides completion for top-level commands self.verify_completions( - self.dap_server.get_completions("var"), + self.dap_server.get_completions("se"), + [session_completion, settings_completion] + ) + + # Provides completions for sub-commands + self.verify_completions( + self.dap_server.get_completions("memory "), [ { - "text": "var", - "label": "var -- vector<baz> &", + "text": "read", + "label": "read -- Read from the memory of the current target process." }, { - "text": "var", - "label": "var -- Show variables for the current stack frame. Defaults to all arguments and local variables in scope. Names of argument, local, file static and file global variables can be specified.", + "text": "region", + "label": "region -- Get information on the memory region containing an address in the current target process.", }, - ], - [ - {"text": "var1", "label": "var1 -- int &"}, - ], + ] ) - # should see global keywords but not variables inside main + # Provides completions for parameter values of commands self.verify_completions( - self.dap_server.get_completions("str"), - [{"text": "struct", "label": "struct"}], - [{"text": "str1", "label": "str1 -- std::string &"}], + self.dap_server.get_completions("`log enable "), + [{"text": "gdb-remote", "label": "gdb-remote"}], ) - self.continue_to_next_stop() + # Also works if the escape prefix is used + self.verify_completions( + self.dap_server.get_completions("`mem"), + [memory_completion] + ) - # should see variables from main but not from the other function self.verify_completions( - self.dap_server.get_completions("var"), - [ - {"text": "var1", "label": "var1 -- int &"}, - {"text": "var2", "label": "var2 -- int &"}, - ], + self.dap_server.get_completions("`"), + [session_completion, settings_completion, memory_completion] + ) + + + # Completes an incomplete quoted token + self.verify_completions( + self.dap_server.get_completions('setting "se'), [ { - "text": "var", - "label": "var -- vector<baz> &", + "text": "set", + "label": "set -- Set the value of the specified debugger setting.", } ], ) + # Completes an incomplete quoted token self.verify_completions( - self.dap_server.get_completions("str"), - [ - {"text": "struct", "label": "struct"}, - {"text": "str1", "label": "str1 -- string &"}, - ], + self.dap_server.get_completions("'mem"), + [memory_completion], ) - # should complete arbitrary commands including word starts + # Completes expressions with quotes inside self.verify_completions( - self.dap_server.get_completions("`log enable "), - [{"text": "gdb-remote", "label": "gdb-remote"}], + self.dap_server.get_completions('expr " "; typed'), + [{"text": "typedef", "label": "typedef"}], ) - # should complete expressions with quotes inside + # Provides completions for commands, but not variables self.verify_completions( - self.dap_server.get_completions('`expr " "; typed'), - [{"text": "typedef", "label": "typedef"}], + self.dap_server.get_completions("var"), + [command_var_completion], + [variable_var_completion], + ) + + + def test_variable_completions(self): + """ + Tests completion requests in "repl-mode=command" ---------------- ashgti wrote:
repl-mode=variable? https://github.com/llvm/llvm-project/pull/110784 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits