https://github.com/clayborg commented:
None of this should be needed. If we have a child value that is a pointer to a
synthetic value, and we expand that value, we should be showing the synthetic
children via the standard LLDB APIs.
In LLDB way back in the beginning, when we would expand a pointer, we would
show the first child as the dereferenced value and its name would be
"*<ptr-name>". And then if you expanded that, then you would see the contents.
So if we had this code:
```
struct Point { int x,y; };
int my_int = 12
Point pt = {1,2};
Point *pt_ptr = &pt;
int *my_int_ptr = &i;
```
Old LLDB would show this as:
```
pt_ptr
\_ *pt_ptr
|- x = 1
\- y = 2
my_int_ptr
\_ 12
```
Current LLDB, when you expand a pointer, will look at the type and see if the
type has children, and if it does, it will auto dereference the type:
```
pt_ptr
|- x = 1
\- y = 2
my_int_ptr
\_ 12
```
And if the dereferenced value has a synthetic child provider, it should be
grabbing that synthetic value and asking it for its children.
So this isn't the right fix for this. It works for C++. We need to figure out
why it isn't working for your language
<img width="779" alt="Screenshot 2024-11-26 at 12 12 44 PM"
src="https://github.com/user-attachments/assets/7a548b5b-9b94-4dbe-9060-9fb0e0416730">
https://github.com/llvm/llvm-project/pull/117755
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits