diff --git a/lldb/source/Plugins/TypeSystem/Swift/TypeSystemSwiftTypeRef.cpp b/lldb/source/Plugins/TypeSystem/Swift/TypeSystemSwiftTypeRef.cpp index 7d670ac3fc409..c36e23c1ba874 100644 --- a/lldb/source/Plugins/TypeSystem/Swift/TypeSystemSwiftTypeRef.cpp +++ b/lldb/source/Plugins/TypeSystem/Swift/TypeSystemSwiftTypeRef.cpp @@ -2855,6 +2855,13 @@ TypeSystemSwiftTypeRef::RemangleAsType(swift::Demangle::Demangler &dem, if (!node) return {}; + // Guard against an empty opaque type. This can happen when demangling an + // OpaqueTypeRef (ex `$sBpD`). An empty opaque will assert when mangled. + if (auto *opaque_type = + swift_demangle::ChildAtPath(node, {Node::Kind::OpaqueType})) + if (!opaque_type->hasChildren()) + return {}; + using namespace swift::Demangle; if (node->getKind() != Node::Kind::Global) { auto global = dem.createNode(Node::Kind::Global);