This patch allows the PDB parser to recognize UDT symbols as ObjCInterfaceDecls and delay the definition process until we resolve the complete compiler type. This corresponds to the approach in the DWARF parser: https://github.com/llvm/llvm-project/blob/release/16.x/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp#L1869-L1871
In order to cache forward declarations for both, CXXRecordDecl and ObjCInterfaceDecl, the map type is changed to store NamedDecls now (first common base). The test shows that we get the names of type and members for a simple ObjC class now.
I am not an ObjC expert, but from those who are I know that in practice this should holds for all common scenarios. So far it works reliably.
Right now I'd like to avoid patching the PDB contents from the compiler side. Would be great to see how far we get without. If there's a better way to do the same based on current PDB info, please let me know.