@@ -431,6 +431,7 @@ swift::Demangle::NodePointer TypeSystemSwiftTypeRef::Transform(
431
431
for (NodePointer child : *node) {
432
432
NodePointer transformed = Transform (dem, child, fn);
433
433
changed |= (child != transformed);
434
+ assert (transformed && " callback returned a nullptr" );
434
435
if (transformed)
435
436
children.push_back (transformed);
436
437
}
@@ -1423,15 +1424,22 @@ static bool ContainsSugaredParen(swift::Demangle::NodePointer node) {
1423
1424
}
1424
1425
1425
1426
swift::Demangle::NodePointer
1426
- StripPrivateDeclNames (swift::Demangle::Demangler &dem,
1427
- swift::Demangle::NodePointer node) {
1427
+ StripPrivateIDs (swift::Demangle::Demangler &dem,
1428
+ swift::Demangle::NodePointer node) {
1428
1429
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
- });
1430
+ return TypeSystemSwiftTypeRef::Transform (dem, node, [&](NodePointer node) {
1431
+ if (node->getKind () != Node::Kind::PrivateDeclName ||
1432
+ node->getNumChildren () != 2 )
1433
+ return node;
1434
+
1435
+ assert (node->getFirstChild ()->getKind () == Node::Kind::Identifier);
1436
+ assert (node->getLastChild ()->getKind () == Node::Kind::Identifier);
1437
+ auto *new_node = dem.createNode (Node::Kind::PrivateDeclName);
1438
+ auto *ident = dem.createNodeWithAllocatedText (
1439
+ Node::Kind::Identifier, node->getLastChild ()->getText ());
1440
+ new_node->addChild (ident, dem);
1441
+ return new_node;
1442
+ });
1435
1443
}
1436
1444
1437
1445
// / Compare two swift types from different type systems by comparing their
@@ -1454,9 +1462,9 @@ template <> bool Equivalent<CompilerType>(CompilerType l, CompilerType r) {
1454
1462
if (ContainsUnresolvedTypeAlias (r_node) ||
1455
1463
ContainsGenericTypeParameter (r_node) || ContainsSugaredParen (r_node))
1456
1464
return true ;
1457
- if (swift::Demangle::mangleNode (StripPrivateDeclNames (
1465
+ if (swift::Demangle::mangleNode (StripPrivateIDs (
1458
1466
dem, TypeSystemSwiftTypeRef::CanonicalizeSugar (dem, l_node))) ==
1459
- swift::Demangle::mangleNode (StripPrivateDeclNames (
1467
+ swift::Demangle::mangleNode (StripPrivateIDs (
1460
1468
dem, TypeSystemSwiftTypeRef::CanonicalizeSugar (dem, r_node))))
1461
1469
return true ;
1462
1470
0 commit comments