https://github.com/Michael137 updated https://github.com/llvm/llvm-project/pull/83234
>From cf1359a825b09d48c312ce40da950c13f30c67c8 Mon Sep 17 00:00:00 2001 From: Sudharsan Veeravalli <quic_...@quicinc.com> Date: Wed, 28 Feb 2024 13:46:46 +0530 Subject: [PATCH 1/3] [LLDB] Fix crash when using tab completion on class variables --- lldb/source/Symbol/Variable.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lldb/source/Symbol/Variable.cpp b/lldb/source/Symbol/Variable.cpp index 2bb2ff7db4b721..a33c3433d9e245 100644 --- a/lldb/source/Symbol/Variable.cpp +++ b/lldb/source/Symbol/Variable.cpp @@ -509,15 +509,17 @@ static void PrivateAutoCompleteMembers( CompilerType member_compiler_type = compiler_type.GetFieldAtIndex( i, member_name, nullptr, nullptr, nullptr); - if (partial_member_name.empty() || - llvm::StringRef(member_name).starts_with(partial_member_name)) { + if (partial_member_name.empty()) { + request.AddCompletion((prefix_path + member_name).str()); + } else if (llvm::StringRef(member_name) + .starts_with(partial_member_name)) { if (member_name == partial_member_name) { PrivateAutoComplete( frame, partial_path, prefix_path + member_name, // Anything that has been resolved // already will be in here member_compiler_type.GetCanonicalType(), request); - } else { + } else if (partial_path.empty()) { request.AddCompletion((prefix_path + member_name).str()); } } >From dab0c4b75bd07cc5fbad313311b6a747f985712d Mon Sep 17 00:00:00 2001 From: Sudharsan Veeravalli <quic_...@quicinc.com> Date: Wed, 28 Feb 2024 21:04:28 +0530 Subject: [PATCH 2/3] Add test --- .../API/functionalities/completion/TestCompletion.py | 6 ++++-- lldb/test/API/functionalities/completion/main.cpp | 9 +++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lldb/test/API/functionalities/completion/TestCompletion.py b/lldb/test/API/functionalities/completion/TestCompletion.py index f71bc73928f0f4..2f6af3cfce109d 100644 --- a/lldb/test/API/functionalities/completion/TestCompletion.py +++ b/lldb/test/API/functionalities/completion/TestCompletion.py @@ -60,10 +60,12 @@ def test_dwim_print(self): def do_test_variable_completion(self, command): self.complete_from_to(f"{command} fo", f"{command} fooo") - self.complete_from_to(f"{command} fooo.", f"{command} fooo.") + self.complete_from_to(f"{command} fooo.", f"{command} fooo.t") + self.complete_from_to(f"{command} fooo.t.", f"{command} fooo.t.x") self.complete_from_to(f"{command} fooo.dd", f"{command} fooo.dd") - self.complete_from_to(f"{command} ptr_fooo->", f"{command} ptr_fooo->") + self.complete_from_to(f"{command} ptr_fooo->", f"{command} ptr_fooo->t") + self.complete_from_to(f"{command} ptr_fooo->t", f"{command} ptr_fooo->t.x") self.complete_from_to(f"{command} ptr_fooo->dd", f"{command} ptr_fooo->dd") self.complete_from_to(f"{command} cont", f"{command} container") diff --git a/lldb/test/API/functionalities/completion/main.cpp b/lldb/test/API/functionalities/completion/main.cpp index 06ff5773e8a9dc..104dcc88e8c118 100644 --- a/lldb/test/API/functionalities/completion/main.cpp +++ b/lldb/test/API/functionalities/completion/main.cpp @@ -1,8 +1,17 @@ #include <iostream> +class Baz +{ +public: + int x; +}; + class Foo { public: + Baz t; + int temp; + int Bar(int x, int y) { return x + y; >From 12b43652a14b0e1d31465859d58aedcd2d63dace Mon Sep 17 00:00:00 2001 From: Sudharsan Veeravalli <quic_...@quicinc.com> Date: Wed, 28 Feb 2024 21:14:35 +0530 Subject: [PATCH 3/3] Clang-format changes --- lldb/test/API/functionalities/completion/main.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/lldb/test/API/functionalities/completion/main.cpp b/lldb/test/API/functionalities/completion/main.cpp index 104dcc88e8c118..f925c1d5acf31c 100644 --- a/lldb/test/API/functionalities/completion/main.cpp +++ b/lldb/test/API/functionalities/completion/main.cpp @@ -1,21 +1,17 @@ #include <iostream> -class Baz -{ +class Baz { public: - int x; + int x; }; class Foo { public: - Baz t; - int temp; + Baz t; + int temp; - int Bar(int x, int y) - { - return x + y; - } + int Bar(int x, int y) { return x + y; } }; namespace { int Quux (void) { return 0; } } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits