[Lldb-commits] [PATCH] D147006: [lldb] Fix value printing for a specific case
Dave Lee via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Tue Mar 28 09:38:59 PDT 2023
This revision was automatically updated to reflect the committed changes.
Closed by commit rG51dd8a20c1c3: [lldb] Fix value printing for a specific case (authored by kastiglione).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D147006/new/
https://reviews.llvm.org/D147006
Files:
lldb/include/lldb/DataFormatters/ValueObjectPrinter.h
lldb/source/DataFormatters/ValueObjectPrinter.cpp
lldb/test/API/commands/dwim-print/TestDWIMPrint.py
Index: lldb/test/API/commands/dwim-print/TestDWIMPrint.py
===================================================================
--- lldb/test/API/commands/dwim-print/TestDWIMPrint.py
+++ lldb/test/API/commands/dwim-print/TestDWIMPrint.py
@@ -122,3 +122,12 @@
self.runCmd("settings set auto-one-line-summaries false")
self._expect_cmd(f"dwim-print s", "frame variable")
self._expect_cmd(f"dwim-print (struct Structure)s", "expression")
+
+ def test_summary_strings(self):
+ """Test dwim-print with nested values (structs, etc)."""
+ self.build()
+ lldbutil.run_to_source_breakpoint(self, "// break here", lldb.SBFileSpec("main.c"))
+ self.runCmd("settings set auto-one-line-summaries false")
+ self.runCmd("type summary add -e -s 'stub summary' Structure")
+ self._expect_cmd(f"dwim-print s", "frame variable")
+ self._expect_cmd(f"dwim-print (struct Structure)s", "expression")
Index: lldb/source/DataFormatters/ValueObjectPrinter.cpp
===================================================================
--- lldb/source/DataFormatters/ValueObjectPrinter.cpp
+++ lldb/source/DataFormatters/ValueObjectPrinter.cpp
@@ -445,7 +445,9 @@
}
if (m_summary.size()) {
- m_stream->Printf(" %s", m_summary.c_str());
+ if (ShouldShowName() || value_printed)
+ m_stream->PutChar(' ');
+ m_stream->PutCString(m_summary);
summary_printed = true;
}
}
@@ -560,7 +562,8 @@
return m_valobj;
}
-void ValueObjectPrinter::PrintChildrenPreamble() {
+void ValueObjectPrinter::PrintChildrenPreamble(bool value_printed,
+ bool summary_printed) {
if (m_options.m_flat_output) {
if (ShouldPrintValueObject())
m_stream->EOL();
@@ -568,7 +571,7 @@
if (ShouldPrintValueObject()) {
if (IsRef()) {
m_stream->PutCString(": ");
- } else if (ShouldShowName()) {
+ } else if (value_printed || summary_printed || ShouldShowName()) {
m_stream->PutChar(' ');
}
m_stream->PutCString("{\n");
@@ -694,7 +697,7 @@
for (size_t idx = 0; idx < num_children; ++idx) {
if (ValueObjectSP child_sp = GenerateChild(synth_m_valobj, idx)) {
if (!any_children_printed) {
- PrintChildrenPreamble();
+ PrintChildrenPreamble(value_printed, summary_printed);
any_children_printed = true;
}
PrintChild(child_sp, curr_ptr_depth);
Index: lldb/include/lldb/DataFormatters/ValueObjectPrinter.h
===================================================================
--- lldb/include/lldb/DataFormatters/ValueObjectPrinter.h
+++ lldb/include/lldb/DataFormatters/ValueObjectPrinter.h
@@ -98,7 +98,7 @@
ValueObject *GetValueObjectForChildrenGeneration();
- void PrintChildrenPreamble();
+ void PrintChildrenPreamble(bool value_printed, bool summary_printed);
void PrintChildrenPostamble(bool print_dotdotdot);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D147006.509051.patch
Type: text/x-patch
Size: 2986 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20230328/7737da77/attachment.bin>
More information about the lldb-commits
mailing list