From 8e5cdf8d046cc76b1271dea587b012a5f8272d25 Mon Sep 17 00:00:00 2001 From: Jon Haslam Date: Tue, 23 Apr 2024 18:11:58 +0100 Subject: [PATCH] Support type::Attributed in Clang Parser (#496) --- oi/type_graph/ClangTypeParser.cpp | 6 ++++++ oi/type_graph/ClangTypeParser.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/oi/type_graph/ClangTypeParser.cpp b/oi/type_graph/ClangTypeParser.cpp index 9c406b8..86ae192 100644 --- a/oi/type_graph/ClangTypeParser.cpp +++ b/oi/type_graph/ClangTypeParser.cpp @@ -112,6 +112,8 @@ Type& ClangTypeParser::enumerateType(const clang::Type& ty) { case clang::Type::MemberPointer: return enumerateMemberPointer( llvm::cast(ty)); + case clang::Type::Attributed: + return enumerateAttributed(llvm::cast(ty)); default: throw std::logic_error(std::string("unsupported TypeClass `") + @@ -395,6 +397,10 @@ Type& ClangTypeParser::enumerateMemberPointer( return makeType(ty, Primitive::Kind::StubbedPointer); } +Type& ClangTypeParser::enumerateAttributed(const clang::AttributedType& ty) { + return enumerateType(*ty.getEquivalentType()); +} + Type& ClangTypeParser::enumerateSubstTemplateTypeParm( const clang::SubstTemplateTypeParmType& ty) { // Clang wraps any type that was substituted from e.g. `T` in this type. It diff --git a/oi/type_graph/ClangTypeParser.h b/oi/type_graph/ClangTypeParser.h index 39301e7..d4e27ac 100644 --- a/oi/type_graph/ClangTypeParser.h +++ b/oi/type_graph/ClangTypeParser.h @@ -22,6 +22,7 @@ #include "oi/type_graph/TypeGraph.h" namespace clang { +class AttributedType; class ASTContext; class BuiltinType; class ConstantArrayType; @@ -108,6 +109,7 @@ class ClangTypeParser { Typedef& enumerateUsing(const clang::UsingType&); Type& enumerateUnaryTransformType(const clang::UnaryTransformType&); Type& enumerateDecltypeType(const clang::DecltypeType&); + Type& enumerateAttributed(const clang::AttributedType&); Array& enumerateArray(const clang::ConstantArrayType&); Enum& enumerateEnum(const clang::EnumType&);