static clang::CanQualType getClangBuiltinTypeFromTypedef( clang::Sema &sema, StringRef typedefName) { auto &context = sema.getASTContext(); auto identifier = &context.Idents.get(typedefName); auto found = sema.LookupSingleName(sema.TUScope, identifier, clang::SourceLocation(), clang::Sema::LookupOrdinaryName); auto typedefDecl = dyn_cast_or_null<clang::TypedefDecl>(found); if (!typedefDecl) return {}; auto underlyingTy = context.getCanonicalType(typedefDecl->getUnderlyingType()); if (underlyingTy->getAs<clang::BuiltinType>()) return underlyingTy; return {}; }