kastiglione created this revision.
kastiglione added reviewers: aprantl, JDevlieghere, jingham.
Herald added a project: All.
kastiglione requested review of this revision.
Herald added a project: LLDB.
Herald added a subscriber: lldb-commits.
When `ValueObjectPrinter` calls its `m_decl_printing_helper`, not all state is
passed to
the helper. In particular, the helper doesn't have access to `m_curr_depth`,
and thus
can't act on the logic within `ShouldShowName`.
To address this, this change passes in a modified copy of `m_options`. The
modified copy
has has `m_hide_name` set according to the results of `ShouldShowName`. This
allows
helper functions to know whether the name should be shown or hidden, without
having
access to `ValueObjectPrinter`'s full state.
This is NFC in mainline lldb, as the only decl printing helper doesn't make use
of this.
However in swift-lldb at least, there are decl printing helpers that do need
this
information passed to them. See https://github.com/apple/llvm-project/pull/6795
where a
test is also included.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D150129
Files:
lldb/source/DataFormatters/ValueObjectPrinter.cpp
Index: lldb/source/DataFormatters/ValueObjectPrinter.cpp
===================================================================
--- lldb/source/DataFormatters/ValueObjectPrinter.cpp
+++ lldb/source/DataFormatters/ValueObjectPrinter.cpp
@@ -300,9 +300,14 @@
ConstString type_name_cstr(typeName.GetString());
ConstString var_name_cstr(varName.GetString());
+ DumpValueObjectOptions decl_print_options = m_options;
+ // Pass printing helpers an option object that indicates whether the name
+ // should be shown or hidden.
+ decl_print_options.SetHideName(!ShouldShowName());
+
StreamString dest_stream;
if (m_options.m_decl_printing_helper(type_name_cstr, var_name_cstr,
- m_options, dest_stream)) {
+ decl_print_options, dest_stream)) {
decl_printed = true;
m_stream->PutCString(dest_stream.GetString());
}
Index: lldb/source/DataFormatters/ValueObjectPrinter.cpp
===================================================================
--- lldb/source/DataFormatters/ValueObjectPrinter.cpp
+++ lldb/source/DataFormatters/ValueObjectPrinter.cpp
@@ -300,9 +300,14 @@
ConstString type_name_cstr(typeName.GetString());
ConstString var_name_cstr(varName.GetString());
+ DumpValueObjectOptions decl_print_options = m_options;
+ // Pass printing helpers an option object that indicates whether the name
+ // should be shown or hidden.
+ decl_print_options.SetHideName(!ShouldShowName());
+
StreamString dest_stream;
if (m_options.m_decl_printing_helper(type_name_cstr, var_name_cstr,
- m_options, dest_stream)) {
+ decl_print_options, dest_stream)) {
decl_printed = true;
m_stream->PutCString(dest_stream.GetString());
}
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits