[Lldb-commits] [lldb] 1232964 - [lldb] Omit --show-globals in `help target var` (#85855)
via lldb-commits
lldb-commits at lists.llvm.org
Wed Mar 20 07:03:29 PDT 2024
Author: Felipe de Azevedo Piovezan
Date: 2024-03-20T07:03:24-07:00
New Revision: 12329648e2c3f8651228f17d3619b1e1ddab80f0
URL: https://github.com/llvm/llvm-project/commit/12329648e2c3f8651228f17d3619b1e1ddab80f0
DIFF: https://github.com/llvm/llvm-project/commit/12329648e2c3f8651228f17d3619b1e1ddab80f0.diff
LOG: [lldb] Omit --show-globals in `help target var` (#85855)
This option doesn't exist. It is currently displayed by `help target
var` due to a bug introduced by 41ae8e7445 in 2018.
Some code for `target var` and `frame var` is shared, and some hard-code
constants are used in order to filter out options that belong only to
`frame var`. However, the aforementioned commit failed to update these
constants properly. This patch addresses the issue by having a _single_
place where the filtering of options needs to be done.
Added:
Modified:
lldb/source/Interpreter/OptionGroupVariable.cpp
lldb/test/API/functionalities/target_var/TestTargetVar.py
Removed:
################################################################################
diff --git a/lldb/source/Interpreter/OptionGroupVariable.cpp b/lldb/source/Interpreter/OptionGroupVariable.cpp
index 0e35a641361b82..99644b3f423c81 100644
--- a/lldb/source/Interpreter/OptionGroupVariable.cpp
+++ b/lldb/source/Interpreter/OptionGroupVariable.cpp
@@ -50,6 +50,11 @@ static constexpr OptionDefinition g_variable_options[] = {
"Specify a summary string to use to format the variable output."},
};
+static constexpr auto g_num_frame_options = 4;
+static const auto g_variable_options_noframe =
+ llvm::ArrayRef<OptionDefinition>(g_variable_options)
+ .drop_front(g_num_frame_options);
+
static Status ValidateNamedSummary(const char *str, void *) {
if (!str || !str[0])
return Status("must specify a valid named summary");
@@ -77,9 +82,9 @@ OptionGroupVariable::SetOptionValue(uint32_t option_idx,
llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Status error;
- if (!include_frame_options)
- option_idx += 3;
- const int short_option = g_variable_options[option_idx].short_option;
+ llvm::ArrayRef<OptionDefinition> variable_options =
+ include_frame_options ? g_variable_options : g_variable_options_noframe;
+ const int short_option = variable_options[option_idx].short_option;
switch (short_option) {
case 'r':
use_regex = true;
@@ -128,16 +133,9 @@ void OptionGroupVariable::OptionParsingStarting(
summary_string.Clear();
}
-#define NUM_FRAME_OPTS 3
-
llvm::ArrayRef<OptionDefinition> OptionGroupVariable::GetDefinitions() {
- auto result = llvm::ArrayRef(g_variable_options);
- // Show the "--no-args", "--no-locals" and "--show-globals" options if we are
- // showing frame specific options
- if (include_frame_options)
- return result;
-
- // Skip the "--no-args", "--no-locals" and "--show-globals" options if we are
- // not showing frame specific options (globals only)
- return result.drop_front(NUM_FRAME_OPTS);
+ // Show the "--no-args", "--no-recognized-args", "--no-locals" and
+ // "--show-globals" options if we are showing frame specific options
+ return include_frame_options ? g_variable_options
+ : g_variable_options_noframe;
}
diff --git a/lldb/test/API/functionalities/target_var/TestTargetVar.py b/lldb/test/API/functionalities/target_var/TestTargetVar.py
index a0f3663f036510..54b7b77b6773ce 100644
--- a/lldb/test/API/functionalities/target_var/TestTargetVar.py
+++ b/lldb/test/API/functionalities/target_var/TestTargetVar.py
@@ -15,6 +15,16 @@ class targetCommandTestCase(TestBase):
def testTargetVarExpr(self):
self.build()
lldbutil.run_to_name_breakpoint(self, "main")
+ self.expect(
+ "help target variable",
+ substrs=[
+ "--no-args",
+ "--no-recognized-args",
+ "--no-locals",
+ "--show-globals",
+ ],
+ matching=False,
+ )
self.expect("target variable i", substrs=["i", "42"])
self.expect(
"target variable var", patterns=["\(incomplete \*\) var = 0[xX](0)*dead"]
More information about the lldb-commits
mailing list