Exemplo n.º 1
0
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 {};
}