Skip to content

Commit 1f2c20f

Browse files
committed
[lldb] Fix desugaring of dicts on TypeSystemSwiftTypeRef
1 parent 08e5663 commit 1f2c20f

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -760,9 +760,12 @@ Desugar(swift::Demangle::Demangler &dem, swift::Demangle::NodePointer node,
760760
type->addChild(concrete, dem);
761761
}
762762
NodePointer type_list = dem.createNode(Node::Kind::TypeList);
763-
{
763+
764+
assert(node->getNumChildren() >= 1 && node->getNumChildren() <= 2 &&
765+
"Sugared types should only have 1 or 2 children");
766+
for (NodePointer child : *node) {
764767
NodePointer type = dem.createNode(Node::Kind::Type);
765-
type->addChild(node->getFirstChild(), dem);
768+
type->addChild(child, dem);
766769
type_list->addChild(type, dem);
767770
}
768771
desugared->addChild(type, dem);
@@ -969,7 +972,7 @@ swift::Demangle::NodePointer TypeSystemSwiftTypeRef::GetNodeForPrintingImpl(
969972
}
970973
return node;
971974
case Node::Kind::SugaredDictionary:
972-
if (node->getNumChildren() == 1) {
975+
if (node->getNumChildren() == 2) {
973976
return Desugar(dem, node, Node::Kind::BoundGenericStructure,
974977
Node::Kind::Structure, "Dictionary");
975978
}
@@ -2011,8 +2014,7 @@ bool TypeSystemSwiftTypeRef::IsPossibleDynamicType(opaque_compiler_type_t type,
20112014
NodePointer type_list = node->getLastChild();
20122015
if (type_list->getKind() != Node::Kind::TypeList)
20132016
return false;
2014-
for (size_t i = 0; i < type_list->getNumChildren(); ++i) {
2015-
NodePointer child = type_list->getChild(i);
2017+
for (NodePointer child : *type_list) {
20162018
if (child->getKind() == Node::Kind::Type) {
20172019
child = child->getFirstChild();
20182020
if (is_possible_dynamic(child))

0 commit comments

Comments
 (0)