@@ -3187,7 +3187,8 @@ bool TypeSystemSwiftTypeRef::IsTypedefType(opaque_compiler_type_t type) {
3187
3187
using namespace swift ::Demangle;
3188
3188
Demangler dem;
3189
3189
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);
3191
3192
};
3192
3193
3193
3194
#ifndef NDEBUG
@@ -3222,15 +3223,19 @@ TypeSystemSwiftTypeRef::GetTypedefedType(opaque_compiler_type_t type) {
3222
3223
using namespace swift ::Demangle;
3223
3224
Demangler dem;
3224
3225
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))
3226
3228
return {};
3227
3229
auto pair = ResolveTypeAlias (m_swift_ast_context, dem, node);
3230
+ NodePointer type_node = dem.createNode (Node::Kind::Type);
3228
3231
if (NodePointer resolved = std::get<swift::Demangle::NodePointer>(pair)) {
3229
- NodePointer type_node = dem.createNode (Node::Kind::Type);
3230
3232
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);
3232
3237
}
3233
- return std::get<CompilerType>(pair );
3238
+ return RemangleAsType (dem, type_node );
3234
3239
};
3235
3240
#ifndef NDEBUG
3236
3241
// We skip validation when dealing with a builtin type since builtins are
0 commit comments