From 08c9b0b68813910edea31515e9d1302685fb63eb Mon Sep 17 00:00:00 2001 From: Dave Lee Date: Wed, 2 Jul 2025 15:14:24 -0700 Subject: [PATCH] [lldb] Avoid mangling empty opaque types --- .../Plugins/TypeSystem/Swift/TypeSystemSwiftTypeRef.cpp | 7 +++++++ 1 file changed, 7 insertions(+) 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);