[Lldb-commits] [lldb] [lldb-dap] Correct auto-completion based on ReplMode and escape char (PR #110784)
John Harrison via lldb-commits
lldb-commits at lists.llvm.org
Wed Oct 2 14:50:18 PDT 2024
================
@@ -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
More information about the lldb-commits
mailing list