Skip to content

Commit 6f8a505

Browse files
Merge pull request #2268 from adrian-prantl/68171397-next
Implement TypeSystemSwiftTypeRef::GetReferentType()
2 parents 6a72003 + b01b81d commit 6f8a505

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

lldb/source/Plugins/TypeSystem/Swift/TypeSystemSwiftTypeRef.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2515,7 +2515,21 @@ CompilerType TypeSystemSwiftTypeRef::GetErrorType() {
25152515

25162516
CompilerType
25172517
TypeSystemSwiftTypeRef::GetReferentType(opaque_compiler_type_t type) {
2518-
return m_swift_ast_context->GetReferentType(ReconstructType(type));
2518+
auto impl = [&]() -> CompilerType {
2519+
using namespace swift::Demangle;
2520+
Demangler dem;
2521+
NodePointer node = GetDemangledType(dem, AsMangledName(type));
2522+
if (!node ||
2523+
(node->getKind() != Node::Kind::Unowned &&
2524+
node->getKind() != Node::Kind::Unmanaged) ||
2525+
!node->hasChildren())
2526+
return {this, type};
2527+
node = node->getFirstChild();
2528+
if (!node || node->getKind() != Node::Kind::Type || !node->hasChildren())
2529+
return {this, type};
2530+
return RemangleAsType(dem, node);
2531+
};
2532+
VALIDATE_AND_RETURN(impl, GetReferentType, type, (ReconstructType(type)));
25192533
}
25202534

25212535
CompilerType

lldb/source/Target/SwiftLanguageRuntimeDynamicTypeResolution.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -997,6 +997,7 @@ llvm::Optional<uint64_t> SwiftLanguageRuntimeImpl::GetMemberVariableOffset(
997997

998998
static CompilerType GetWeakReferent(TypeSystemSwiftTypeRef &ts,
999999
CompilerType type) {
1000+
// FIXME: This is very similar to TypeSystemSwiftTypeRef::GetReferentType().
10001001
using namespace swift::Demangle;
10011002
Demangler dem;
10021003
auto mangled = type.GetMangledTypeName().GetStringRef();

0 commit comments

Comments
 (0)