@@ -695,8 +695,10 @@ void LogUnimplementedTypeKind(const char *function, CompilerType type) {
695
695
#endif
696
696
}
697
697
698
- CompilerType GetCanonicalClangType (CompilerType type) {
699
- for (unsigned i = 0 ; i < 32 ; ++i) {
698
+ // / Resolve a (chain of) typedefs.
699
+ CompilerType GetTypedefedTypeRecursive (CompilerType type) {
700
+ // Guard against cycles.
701
+ for (unsigned i = 0 ; i < 128 ; ++i) {
700
702
if (!type.IsTypedefType ())
701
703
return type;
702
704
type = type.GetTypedefedType ();
@@ -730,7 +732,7 @@ SwiftLanguageRuntime::GetNumChildren(CompilerType type,
730
732
if (!clang_type)
731
733
ts.IsImportedType (type.GetOpaqueQualType (), &clang_type);
732
734
if (clang_type) {
733
- clang_type = GetCanonicalClangType (clang_type);
735
+ clang_type = GetTypedefedTypeRecursive (clang_type);
734
736
bool is_signed;
735
737
if (clang_type.IsEnumerationType (is_signed))
736
738
return 1 ;
@@ -1162,7 +1164,7 @@ SwiftLanguageRuntime::GetIndexOfChildMemberWithName(
1162
1164
case TypeInfoKind::Builtin: {
1163
1165
CompilerType clang_type;
1164
1166
if (ts.IsImportedType (type.GetOpaqueQualType (), &clang_type)) {
1165
- clang_type = GetCanonicalClangType (clang_type);
1167
+ clang_type = GetTypedefedTypeRecursive (clang_type);
1166
1168
bool is_signed;
1167
1169
if (clang_type.IsEnumerationType (is_signed)) {
1168
1170
// Clang enums have an artificial rawValue property.
0 commit comments