[Lldb-commits] [PATCH] D153489: [lldb] Print hint if object description is requested but not implemented
Dave Lee via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Wed Jun 28 10:29:00 PDT 2023
kastiglione added inline comments.
================
Comment at: lldb/source/Commands/CommandObjectDWIMPrint.cpp:81-83
+ << "note: object description requested, but type doesn't implement "
+ "a custom object description. Consider using \"p\" instead of "
+ "\"po\"\n";
----------------
I wonder if there are users who might ignore this, and then find it annoying to see it repeatedly. Should it be a once per session warning? Once per class? Or controlled by a setting.
================
Comment at: lldb/source/Commands/CommandObjectDWIMPrint.cpp:153-154
- valobj_sp->Dump(result.GetOutputStream(), dump_options);
+ MaybeAddPoHintAndDump(*valobj_sp.get(), dump_options, language, is_po,
+ result.GetOutputStream());
+
----------------
I know it would be less "DRY", but it also feels weird to me to pass in a bool that controls whether the function does anything. At the callsite, I think the semantics would be more clear as:
```
if (is_po)
MaybeAddPoHintAndDump(*valobj_sp.get(), dump_options, language,
result.GetOutputStream());
```
================
Comment at: lldb/source/Commands/CommandObjectDWIMPrint.cpp:177
if (valobj_sp->GetError().GetError() != UserExpression::kNoResult)
- valobj_sp->Dump(result.GetOutputStream(), dump_options);
+ MaybeAddPoHintAndDump(*valobj_sp.get(), dump_options, language, is_po,
+ result.GetOutputStream());
----------------
================
Comment at: lldb/source/Commands/CommandObjectDWIMPrint.h:46-51
+ /// Add a hint if object description was requested, but no description
+ /// function was implemented, and dump valobj to output_stream after.
+ static void MaybeAddPoHintAndDump(ValueObject &valobj,
+ const DumpValueObjectOptions &dump_options,
+ lldb::LanguageType language, bool is_po,
+ Stream &output_stream);
----------------
Should this hint be part of dwim-print only? At this point I see `expression` as a command you use to do exactly what you ask it to do.
================
Comment at: lldb/source/Commands/CommandObjectFrame.cpp:708
rec_value_sp->GetPreferredDisplayLanguage());
+ rec_value_sp->GetPreferredDisplayLanguage();
options.SetRootValueObjectName(rec_value_sp->GetName().AsCString());
----------------
Why is this line added? If this getter has side effects, we should create an appropriately named function that performs the side effects.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D153489/new/
https://reviews.llvm.org/D153489
More information about the lldb-commits
mailing list