labath added a comment. In D77153#1955829 <https://reviews.llvm.org/D77153#1955829>, @friss wrote:
> I was checking whether there is a way to catch null pointer before a type > summary is even chosen. And found out that such logic exists, but only for > Objective-C. Languages have a `IsNilReference()` virtual method that can tell > whether a `ValueObject` is a nil reference. It's only implemented for > ObjectiveC and value objects that test positive for this method are displayed > as "nil" is the generic code of `ValueObjectPrinter.cpp`. I can see a few > options: > > - I can rework the patch to affect only the libc++ string formatter which was > the issue I was trying to solve in the first place > - I can implement `IsNilReference()` for C++ and change `ValueObjectPrinter` > to print C++ "nil references" as "nullptr". > - I do the above and add another customization point in the Language plugins > which tells `ValueObjectPrinter` out to display "nil" references, so that > there's no Language specific code in `ValueObjectPrinter`. All of those options sound fine to me. Making that generic is obviously preferable, but I don't know how much work that would be. The thing that I found surprising when looking at this is that `std::string` has the exact same summary as a `std::string *` which points to it. I would have expected at least some subtle hint (perhaps by prepending the summary with a hex pointer value?) to indicate that we're looking at a pointer. This would be doable if the generic code had some way to understand pointers (and their nullness). > A few additional questions come to mind though: > > - Was the intent if `IsNilReference()` to be Objective-C specific in the > first place? > - Should we do the same thing for C and NULL? > - C, C++ and Objective-C(++) being highly intermingled, would something like > this even do the right thing in all cases? Good questions, and I don't really have an answer for that. I don't think that `IsNilReference` should be c++-specific. Printing C pointers as NULL would be nice, but i don't know if we have any summaries for C types anyway. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D77153/new/ https://reviews.llvm.org/D77153 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits