[Lldb-commits] [lldb] 8d4f0e0 - [lldb] Refine call to decl printing helper (NFC)

Dave Lee via lldb-commits lldb-commits at lists.llvm.org
Mon May 15 15:20:54 PDT 2023


Author: Dave Lee
Date: 2023-05-15T15:20:48-07:00
New Revision: 8d4f0e079554c5eb5c9effda58dbda3b17f03160

URL: https://github.com/llvm/llvm-project/commit/8d4f0e079554c5eb5c9effda58dbda3b17f03160
DIFF: https://github.com/llvm/llvm-project/commit/8d4f0e079554c5eb5c9effda58dbda3b17f03160.diff

LOG: [lldb] Refine call to decl printing helper (NFC)

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.

Differential Revision: https://reviews.llvm.org/D150129

Added: 
    

Modified: 
    lldb/source/DataFormatters/ValueObjectPrinter.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/DataFormatters/ValueObjectPrinter.cpp b/lldb/source/DataFormatters/ValueObjectPrinter.cpp
index 8e44f723165b7..bde999a7a8bcf 100644
--- a/lldb/source/DataFormatters/ValueObjectPrinter.cpp
+++ b/lldb/source/DataFormatters/ValueObjectPrinter.cpp
@@ -300,9 +300,14 @@ void ValueObjectPrinter::PrintDecl() {
     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());
     }


        


More information about the lldb-commits mailing list