[lldb] Identify Swift-implemented ObjC classes
authorDave Lee <davelee.com@gmail.com>
Tue, 11 Jul 2023 20:20:49 +0000 (13:20 -0700)
committerDave Lee <davelee.com@gmail.com>
Fri, 21 Jul 2023 02:32:12 +0000 (19:32 -0700)
commite19339f5f8c15d4307aaed14309e38e3c87121ac
treed69f6e87fe018d7bd71acec9ac869450c62f8cc9
parentec4ddc2809a42b25fee0c9997b57920b3c81dee4
[lldb] Identify Swift-implemented ObjC classes

Classes implemented in Swift can be exposed to ObjC. For those classes, the ObjC
metadata is incomplete. Specifically, the encoded types of the ivars are incomplete. As
one might expect, the Swift metadata _is_ complete. In such cases, the Swift runtime
should be consulted when determining the dynamic type of a value.

Differential Revision: https://reviews.llvm.org/D152837
lldb/include/lldb/Target/LanguageRuntime.h
lldb/source/Core/ValueObjectDynamicValue.cpp
lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCClassDescriptorV2.cpp
lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCClassDescriptorV2.h
lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h
lldb/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h