Skip to content

Commit a9ded5d

Browse files
committed
strip only first PrivateDeclName child
1 parent a976288 commit a9ded5d

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

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

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,7 @@ 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");
434435
if (transformed)
435436
children.push_back(transformed);
436437
}
@@ -1423,15 +1424,22 @@ static bool ContainsSugaredParen(swift::Demangle::NodePointer node) {
14231424
}
14241425

14251426
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) {
14281429
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+
});
14351443
}
14361444

14371445
/// Compare two swift types from different type systems by comparing their
@@ -1454,9 +1462,9 @@ template <> bool Equivalent<CompilerType>(CompilerType l, CompilerType r) {
14541462
if (ContainsUnresolvedTypeAlias(r_node) ||
14551463
ContainsGenericTypeParameter(r_node) || ContainsSugaredParen(r_node))
14561464
return true;
1457-
if (swift::Demangle::mangleNode(StripPrivateDeclNames(
1465+
if (swift::Demangle::mangleNode(StripPrivateIDs(
14581466
dem, TypeSystemSwiftTypeRef::CanonicalizeSugar(dem, l_node))) ==
1459-
swift::Demangle::mangleNode(StripPrivateDeclNames(
1467+
swift::Demangle::mangleNode(StripPrivateIDs(
14601468
dem, TypeSystemSwiftTypeRef::CanonicalizeSugar(dem, r_node))))
14611469
return true;
14621470

0 commit comments

Comments
 (0)