Skip to content

Commit 1d0faed

Browse files
author
git apple-llvm automerger
committed
Merge commit '04cbb3aa07db' from swift/release/5.5 into swift/main
2 parents de299a4 + 04cbb3a commit 1d0faed

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

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

Lines changed: 10 additions & 5 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,15 +3223,19 @@ 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);
3230+
NodePointer type_node = dem.createNode(Node::Kind::Type);
32283231
if (NodePointer resolved = std::get<swift::Demangle::NodePointer>(pair)) {
3229-
NodePointer type_node = dem.createNode(Node::Kind::Type);
32303232
type_node->addChild(resolved, dem);
3231-
return RemangleAsType(dem, type_node);
3233+
} else {
3234+
NodePointer clang_node = GetClangTypeNode(std::get<CompilerType>(pair),
3235+
dem, m_swift_ast_context);
3236+
type_node->addChild(clang_node, dem);
32323237
}
3233-
return std::get<CompilerType>(pair);
3238+
return RemangleAsType(dem, type_node);
32343239
};
32353240
#ifndef NDEBUG
32363241
// We skip validation when dealing with a builtin type since builtins are

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)