[lldb-dev] Should MyType's synthetic provider be instantiated for MyType* and MyType** ?

Vadim Chugunov via lldb-dev lldb-dev at lists.llvm.org
Mon Jul 19 18:24:18 PDT 2021


On Mon, Jul 19, 2021 at 6:02 PM Jim Ingham <jingham at apple.com> wrote:

> You can control whether you want data-formatters on "class Foo" to also
> match "class Foo *" and "class Foo &" using the --skip-pointers and
> --skip-references options respectively.
> So this part is clearly is by design.
>
> As for what the formatter gets passed, your formatter has chosen to see
> values that are pointers to the type by not passing --skip-pointers, so it
> makes sense to pass it
> the pointer - which it after all asked for.  I can't see a strong enough
> argument either way to want to change the way it currently works, since we
> might break other people's uses of it.
>

Certainly.  I just wish the documentation were more explicit about this
quirk.  This behavior is especially confusing because the single
indirection case usually works, since pointer.GetChildMemberWithName('...')
transparently dereferences.   It starts breaking only at
pointer-to-pointer-to-type.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20210719/1ec5007a/attachment.html>


More information about the lldb-dev mailing list