Skip to content

Commit 67f4fcf

Browse files
committed
Make TypeSystemSwiftTypeRef typedef functions consider BoundGenericTypeAlias nodes
1 parent 0d95057 commit 67f4fcf

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3154,7 +3154,8 @@ bool TypeSystemSwiftTypeRef::IsTypedefType(opaque_compiler_type_t type) {
31543154
using namespace swift::Demangle;
31553155
Demangler dem;
31563156
NodePointer node = GetDemangledType(dem, AsMangledName(type));
3157-
return node && node->getKind() == Node::Kind::TypeAlias;
3157+
return node && (node->getKind() == Node::Kind::TypeAlias ||
3158+
node->getKind() == Node::Kind::BoundGenericTypeAlias);
31583159
};
31593160

31603161
#ifndef NDEBUG
@@ -3179,7 +3180,8 @@ TypeSystemSwiftTypeRef::GetTypedefedType(opaque_compiler_type_t type) {
31793180
using namespace swift::Demangle;
31803181
Demangler dem;
31813182
NodePointer node = GetDemangledType(dem, AsMangledName(type));
3182-
if (!node || node->getKind() != Node::Kind::TypeAlias)
3183+
if (!node || (node->getKind() != Node::Kind::TypeAlias &&
3184+
node->getKind() != Node::Kind::BoundGenericTypeAlias))
31833185
return {};
31843186
auto pair = ResolveTypeAlias(m_swift_ast_context, dem, node);
31853187
if (NodePointer resolved = std::get<swift::Demangle::NodePointer>(pair)) {

lldb/unittests/Symbol/TestTypeSystemSwiftTypeRef.cpp

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -688,5 +688,20 @@ TEST_F(TestTypeSystemSwiftTypeRef, IsTypedefType) {
688688
CompilerType t = GetCompilerType(b.Mangle(n));
689689
ASSERT_FALSE(t.IsTypedefType());
690690
};
691-
};
691+
{
692+
NodePointer n = b.GlobalType(
693+
b.Node(Node::Kind::BoundGenericTypeAlias,
694+
b.Node(Node::Kind::Type,
695+
b.Node(Node::Kind::TypeAlias,
696+
b.Node(Node::Kind::Module, "module"),
697+
b.Node(Node::Kind::Identifier, "SomeType"))),
698+
b.Node(Node::Kind::TypeList,
699+
b.Node(Node::Kind::Type,
700+
b.Node(Node::Kind::Structure,
701+
b.Node(Node::Kind::Module, "Swift"),
702+
b.Node(Node::Kind::Identifier, "Int"))))));
703+
CompilerType t = GetCompilerType(b.Mangle(n));
704+
ASSERT_TRUE(t.IsTypedefType());
705+
};
706+
}
692707

0 commit comments

Comments
 (0)