Skip to content

Commit dae5d8a

Browse files
committed
strip PrivateDeclNames before validating swift symbols
1 parent 0d1bead commit dae5d8a

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

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

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,6 @@ swift::Demangle::NodePointer TypeSystemSwiftTypeRef::Transform(
431431
for (NodePointer child : *node) {
432432
NodePointer transformed = Transform(dem, child, fn);
433433
changed |= (child != transformed);
434-
assert(transformed && "callback returned a nullptr");
435434
if (transformed)
436435
children.push_back(transformed);
437436
}
@@ -1422,7 +1421,19 @@ static bool ContainsSugaredParen(swift::Demangle::NodePointer node) {
14221421

14231422
return false;
14241423
}
1425-
1424+
1425+
swift::Demangle::NodePointer
1426+
StripPrivateDeclNames(swift::Demangle::Demangler &dem,
1427+
swift::Demangle::NodePointer node) {
1428+
using namespace swift::Demangle;
1429+
return TypeSystemSwiftTypeRef::Transform(
1430+
dem, node, [&](NodePointer node) -> NodePointer {
1431+
if (node->getKind() == Node::Kind::PrivateDeclName)
1432+
return nullptr;
1433+
return node;
1434+
});
1435+
}
1436+
14261437
/// Compare two swift types from different type systems by comparing their
14271438
/// (canonicalized) mangled name.
14281439
template <> bool Equivalent<CompilerType>(CompilerType l, CompilerType r) {
@@ -1443,10 +1454,10 @@ template <> bool Equivalent<CompilerType>(CompilerType l, CompilerType r) {
14431454
if (ContainsUnresolvedTypeAlias(r_node) ||
14441455
ContainsGenericTypeParameter(r_node) || ContainsSugaredParen(r_node))
14451456
return true;
1446-
if (swift::Demangle::mangleNode(
1447-
TypeSystemSwiftTypeRef::CanonicalizeSugar(dem, l_node)) ==
1448-
swift::Demangle::mangleNode(
1449-
TypeSystemSwiftTypeRef::CanonicalizeSugar(dem, r_node)))
1457+
if (swift::Demangle::mangleNode(StripPrivateDeclNames(
1458+
dem, TypeSystemSwiftTypeRef::CanonicalizeSugar(dem, l_node))) ==
1459+
swift::Demangle::mangleNode(StripPrivateDeclNames(
1460+
dem, TypeSystemSwiftTypeRef::CanonicalizeSugar(dem, r_node))))
14501461
return true;
14511462

14521463
// SwiftASTContext hardcodes some less-precise types.

0 commit comments

Comments
 (0)