cmtice wrote: > On Jul 10, 2024, at 9:22 PM, cmtice ***@***.***> wrote: @cmtice commented on > this pull request. In lldb/include/lldb/Core/DILAST.h <[#95738 > (comment)](https://github.com/llvm/llvm-project/pull/95738#discussion_r1673380259)>: > > +/// Checks to see if the CompilerType is a Smart Pointer (shared, unique, > weak) +/// or not. Only applicable for C++, which is why this is here and not > part of +/// the CompilerType class. When we go to dereference a pointer we > need to know whether or not it's a smart pointer, because if it's a smart > pointer we need to get at the pointer inside before we can dereference it. So > we use IsSmartPtrType to determine whether or not to insert this layer of > unwrapping (converting the smart ptr into a normal ptr). > I'm not sure it's the job of the DIL to do this sort of unwrapping. Then it > would have to support all the ways this might need to be done in every > language we might end up supporting. This seems more a job for the data > formatters provided by the various languages. That's why Pavel was asking > about the special deference Synthetic Child Provider API, I think. That > provides a way for various languages to encode this sort of behavior w/o it > having to be know in advance by lldb. Jim > […](#) > — Reply to this email directly, view it on GitHub <[#95738 > (comment)](https://github.com/llvm/llvm-project/pull/95738#discussion_r1673380259)>, > or unsubscribe > <https://github.com/notifications/unsubscribe-auth/ADUPVW4J5FKAPSUTJYXSJODZLYB7TAVCNFSM6AAAAABJNJ3CAKVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDCNZQHA4DAOJYGE>. > You are receiving this because you are on a team that was mentioned.
I can use the machinery that's already there in LLDB for dereferencig the smart pointers. But I can't treat smart pointers exactly the same as normal pointers -- among other things a ValueObject whose CompilerType is a smart pointer returns False for IsPointerType(), which causes errors in the code for handling normal pointers. So as far as I can tell I still need my function (declared in DILAST.h) for telling me whether or not a type is a smart pointer type (which is what Pavel's original comment was about). https://github.com/llvm/llvm-project/pull/95738 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits