================
@@ -720,7 +720,7 @@ void FormatManager::LoadSystemFormatters() {
   TypeSummaryImpl::Flags string_flags;
   string_flags.SetCascades(true)
       .SetSkipPointers(true)
-      .SetSkipReferences(false)
+      .SetSkipReferences(true)
----------------
Michael137 wrote:

Ok so what seems to happen is that when we `SetSkipReferences` then we don't 
apply this formatter to references to C-strings. So we don't print a summary 
for those at all. Previously the summary would have been `<no value available>`:
```
>>> lldb.frame.FindVariable("ref").GetSummary()
'<no value available>'
```

And because we skipped printing a summary (and it wasn't an error), we continue 
to printing the children: 
https://github.com/llvm/llvm-project/blob/5a33f99811d29cdf7469104583a30ed854444151/lldb/source/DataFormatters/ValueObjectPrinter.cpp#L123-L129

The child is the `(&ref = "hi")`, which gets formatted with the `char*` system 
formatter.

So what this patch does is "skip summaries for C-string references and let the 
child be printed instead".

Feels like a workaround for `${var%s}` not accounting for references more than 
a proper fix. Let me see if I can fix it in a different way.

https://github.com/llvm/llvm-project/pull/174398
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to