[Lldb-commits] [lldb] [lldb][Expression] Avoid creating ValueObjectSyntheticFilter for incomplete C++ types in ObjC++ targets (PR #153454)

Michael Buch via lldb-commits lldb-commits at lists.llvm.org
Fri Aug 15 00:46:11 PDT 2025


Michael137 wrote:

Hmm looks like this breaks `TestDataFormatterObjCNSContainer.py`:
```
AssertionError: False is not true : Command 'frame variable -d run-target *cfDictionaryRef' did not return successfully
Error output:
error: <user expression 0>:1:1: dereference failed: incomplete type "const __CFDictionary": (CFDictionaryRef) cfDictionaryRef
   1 | *cfDictionaryRef
     | ^
```

Looks like that happens because `CFDictionary` is technically not an ObjC (just C)? But LLDB creates a C++ decl out of it (because we don't differentiate C and C++ structures):
```
0x00000051:   DW_TAG_structure_type
                DW_AT_name      ("__CFDictionary")
                DW_AT_declaration       (true)
```

So then we don't do this special dereferencing we do for ObjC.

Sounds like we should fix this dereferencing properly instead.

https://github.com/llvm/llvm-project/pull/153454


More information about the lldb-commits mailing list