teemperor added a comment.

I don't really know that ValueObject code, but I wish we could just pretend 
that the dereferenced type of X is a type named Y or something like that and 
then just map *Ref classes to their non-opaque bridged types when dereferenced. 
No idea if that's possible though.

Anyway, if we go with the fake empty struct approach then I wish we could just 
use the (fixed?) list 
<https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFDesignConcepts/Articles/tollFreeBridgedTypes.html#//apple_ref/doc/uid/TP40010677>
 of these special bridged structs and hard-code them into some ObjC plugin or 
something like that. If those few selected classes are manually completed as 
empty structs when we find them in the debug info then I think that's a 
manageable workaround to get this running.



================
Comment at: lldb/source/Core/ValueObject.cpp:665
   bool child_is_deref_of_parent = false;
+  CompilerType compiler_type = GetCompilerType();
   uint64_t language_flags = 0;
----------------
This change (and the one below) don't seem to be some NFC refactoring? Not sure 
why this was refactored as `compiler_type` is only ever used once where we 
previously called `GetCompilerType()`?


================
Comment at: lldb/source/Core/ValueObject.cpp:2853
+            ConstString g___lldb_opaque_ptr_type(
+                compiler_type.GetTypeName().AsCString());
+
----------------
This is the name of the typedef, not the underlying incomplete struct. So this 
creates a new empty record with the name of the typedef which seems weird. If 
we fake that some type is actually empty instead of incomplete, then I think 
the underlying struct makes more sense to emulate. Also this variable name is 
kinda weird with it's `g____` prefix even though it's not a global or a static.


================
Comment at: 
lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSContainer.py:58
 
+                
+        self.expect(
----------------
Trailing spaces (that Phabricator somehow doesn't properly highlight :/)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79554/new/

https://reviews.llvm.org/D79554



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to