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
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to