Skip to content

Commit 04cbb3a

Browse files
authored
Merge pull request swiftlang#2996 from augusto2112/tss-typeref-generic-typealias
Make TypeSystemSwiftTypeRef typedef functions consider BoundGenericTypeAlias nodes
2 parents 0be5c65 + 67f4fcf commit 04cbb3a

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
@@ -3187,7 +3187,8 @@ bool TypeSystemSwiftTypeRef::IsTypedefType(opaque_compiler_type_t type) {
31873187
using namespace swift::Demangle;
31883188
Demangler dem;
31893189
NodePointer node = GetDemangledType(dem, AsMangledName(type));
3190-
return node && node->getKind() == Node::Kind::TypeAlias;
3190+
return node && (node->getKind() == Node::Kind::TypeAlias ||
3191+
node->getKind() == Node::Kind::BoundGenericTypeAlias);
31913192
};
31923193

31933194
#ifndef NDEBUG
@@ -3222,7 +3223,8 @@ TypeSystemSwiftTypeRef::GetTypedefedType(opaque_compiler_type_t type) {
32223223
using namespace swift::Demangle;
32233224
Demangler dem;
32243225
NodePointer node = GetDemangledType(dem, AsMangledName(type));
3225-
if (!node || node->getKind() != Node::Kind::TypeAlias)
3226+
if (!node || (node->getKind() != Node::Kind::TypeAlias &&
3227+
node->getKind() != Node::Kind::BoundGenericTypeAlias))
32263228
return {};
32273229
auto pair = ResolveTypeAlias(m_swift_ast_context, dem, node);
32283230
NodePointer type_node = dem.createNode(Node::Kind::Type);

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)