This revision was automatically updated to reflect the committed changes. Closed by commit rG80eb42281feb: [lldb] Tab completion for `frame select` (authored by MrHate, committed by teemperor). Herald added a subscriber: lldb-commits.
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D81177/new/ https://reviews.llvm.org/D81177 Files: lldb/source/Commands/CommandObjectFrame.cpp lldb/test/API/functionalities/completion/TestCompletion.py Index: lldb/test/API/functionalities/completion/TestCompletion.py =================================================================== --- lldb/test/API/functionalities/completion/TestCompletion.py +++ lldb/test/API/functionalities/completion/TestCompletion.py @@ -415,6 +415,13 @@ self.check_completion_with_desc("breakpoint set --Z", [ ]) + def test_frame_select(self): + self.build() + self.main_source_spec = lldb.SBFileSpec("main.cpp") + lldbutil.run_to_source_breakpoint(self, '// Break here', self.main_source_spec) + + self.complete_from_to('frame select ', ['0']) + @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24489") def test_symbol_name(self): self.build() Index: lldb/source/Commands/CommandObjectFrame.cpp =================================================================== --- lldb/source/Commands/CommandObjectFrame.cpp +++ lldb/source/Commands/CommandObjectFrame.cpp @@ -289,6 +289,22 @@ ~CommandObjectFrameSelect() override = default; + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { + if (!m_exe_ctx.HasProcessScope() || request.GetCursorIndex() != 0) + return; + + lldb::ThreadSP thread_sp = m_exe_ctx.GetThreadSP(); + const uint32_t frame_num = thread_sp->GetStackFrameCount(); + for (uint32_t i = 0; i < frame_num; ++i) { + lldb::StackFrameSP frame_sp = thread_sp->GetStackFrameAtIndex(i); + StreamString strm; + frame_sp->Dump(&strm, false, true); + request.TryCompleteCurrentArg(std::to_string(i), strm.GetString()); + } + } + Options *GetOptions() override { return &m_options; } protected:
Index: lldb/test/API/functionalities/completion/TestCompletion.py =================================================================== --- lldb/test/API/functionalities/completion/TestCompletion.py +++ lldb/test/API/functionalities/completion/TestCompletion.py @@ -415,6 +415,13 @@ self.check_completion_with_desc("breakpoint set --Z", [ ]) + def test_frame_select(self): + self.build() + self.main_source_spec = lldb.SBFileSpec("main.cpp") + lldbutil.run_to_source_breakpoint(self, '// Break here', self.main_source_spec) + + self.complete_from_to('frame select ', ['0']) + @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24489") def test_symbol_name(self): self.build() Index: lldb/source/Commands/CommandObjectFrame.cpp =================================================================== --- lldb/source/Commands/CommandObjectFrame.cpp +++ lldb/source/Commands/CommandObjectFrame.cpp @@ -289,6 +289,22 @@ ~CommandObjectFrameSelect() override = default; + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { + if (!m_exe_ctx.HasProcessScope() || request.GetCursorIndex() != 0) + return; + + lldb::ThreadSP thread_sp = m_exe_ctx.GetThreadSP(); + const uint32_t frame_num = thread_sp->GetStackFrameCount(); + for (uint32_t i = 0; i < frame_num; ++i) { + lldb::StackFrameSP frame_sp = thread_sp->GetStackFrameAtIndex(i); + StreamString strm; + frame_sp->Dump(&strm, false, true); + request.TryCompleteCurrentArg(std::to_string(i), strm.GetString()); + } + } + Options *GetOptions() override { return &m_options; } protected:
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits