1include "clang/Basic/ASTNode.td" 2 3class DeclNode<DeclNode base, string diagSpelling = "", bit abstract = 0> 4 : ASTNode, AttrSubject { 5 DeclNode Base = base; 6 bit Abstract = abstract; 7 string DiagSpelling = diagSpelling; 8} 9 10class DeclContext {} 11 12def Decl : DeclNode<?, "", 1>; 13def TranslationUnit : DeclNode<Decl>, DeclContext; 14def PragmaComment : DeclNode<Decl>; 15def PragmaDetectMismatch : DeclNode<Decl>; 16def ExternCContext : DeclNode<Decl>, DeclContext; 17def Named : DeclNode<Decl, "named declarations", 1>; 18 def Namespace : DeclNode<Named, "namespaces">, DeclContext; 19 def UsingDirective : DeclNode<Named>; 20 def NamespaceAlias : DeclNode<Named>; 21 def Label : DeclNode<Named, "labels">; 22 def Type : DeclNode<Named, "types", 1>; 23 def TypedefName : DeclNode<Type, "typedefs", 1>; 24 def Typedef : DeclNode<TypedefName>; 25 def TypeAlias : DeclNode<TypedefName>; 26 def ObjCTypeParam : DeclNode<TypedefName>; 27 def UnresolvedUsingTypename : DeclNode<Type>; 28 def Tag : DeclNode<Type, "tag types", 1>, DeclContext; 29 def Enum : DeclNode<Tag, "enums">; 30 def Record : DeclNode<Tag, "structs, unions, classes">; 31 def CXXRecord : DeclNode<Record, "classes">; 32 def ClassTemplateSpecialization : DeclNode<CXXRecord>; 33 def ClassTemplatePartialSpecialization 34 : DeclNode<ClassTemplateSpecialization>; 35 def TemplateTypeParm : DeclNode<Type>; 36 def Value : DeclNode<Named, "value declarations", 1>; 37 def EnumConstant : DeclNode<Value, "enumerators">; 38 def UnresolvedUsingValue : DeclNode<Value>; 39 def IndirectField : DeclNode<Value>; 40 def Binding : DeclNode<Value>; 41 def OMPDeclareReduction : DeclNode<Value>, DeclContext; 42 def OMPDeclareMapper : DeclNode<Value>, DeclContext; 43 def MSGuid : DeclNode<Value>; 44 def Declarator : DeclNode<Value, "declarators", 1>; 45 def Field : DeclNode<Declarator, "non-static data members">; 46 def ObjCIvar : DeclNode<Field>; 47 def ObjCAtDefsField : DeclNode<Field>; 48 def MSProperty : DeclNode<Declarator>; 49 def Function : DeclNode<Declarator, "functions">, DeclContext; 50 def CXXDeductionGuide : DeclNode<Function>; 51 def CXXMethod : DeclNode<Function>; 52 def CXXConstructor : DeclNode<CXXMethod>; 53 def CXXDestructor : DeclNode<CXXMethod>; 54 def CXXConversion : DeclNode<CXXMethod>; 55 def Var : DeclNode<Declarator, "variables">; 56 def VarTemplateSpecialization : DeclNode<Var>; 57 def VarTemplatePartialSpecialization 58 : DeclNode<VarTemplateSpecialization>; 59 def ImplicitParam : DeclNode<Var>; 60 def ParmVar : DeclNode<Var, "parameters">; 61 def Decomposition : DeclNode<Var>; 62 def OMPCapturedExpr : DeclNode<Var>; 63 def NonTypeTemplateParm : DeclNode<Declarator>; 64 def Template : DeclNode<Named, "templates", 1>; 65 def RedeclarableTemplate : DeclNode<Template, "redeclarable templates", 1>; 66 def FunctionTemplate : DeclNode<RedeclarableTemplate>; 67 def ClassTemplate : DeclNode<RedeclarableTemplate>; 68 def VarTemplate : DeclNode<RedeclarableTemplate>; 69 def TypeAliasTemplate : DeclNode<RedeclarableTemplate>; 70 def TemplateTemplateParm : DeclNode<Template>; 71 def BuiltinTemplate : DeclNode<Template>; 72 def Concept : DeclNode<Template>; 73 def Using : DeclNode<Named>; 74 def UsingPack : DeclNode<Named>; 75 def UsingShadow : DeclNode<Named>; 76 def ConstructorUsingShadow : DeclNode<UsingShadow>; 77 def ObjCMethod : DeclNode<Named, "Objective-C methods">, DeclContext; 78 def ObjCContainer : DeclNode<Named, "Objective-C containers", 1>, DeclContext; 79 def ObjCCategory : DeclNode<ObjCContainer>; 80 def ObjCProtocol : DeclNode<ObjCContainer, "Objective-C protocols">; 81 def ObjCInterface : DeclNode<ObjCContainer, "Objective-C interfaces">; 82 def ObjCImpl 83 : DeclNode<ObjCContainer, "Objective-C implementation declarations", 1>; 84 def ObjCCategoryImpl : DeclNode<ObjCImpl>; 85 def ObjCImplementation : DeclNode<ObjCImpl>; 86 def ObjCProperty : DeclNode<Named, "Objective-C properties">; 87 def ObjCCompatibleAlias : DeclNode<Named>; 88def LinkageSpec : DeclNode<Decl>, DeclContext; 89def Export : DeclNode<Decl>, DeclContext; 90def ObjCPropertyImpl : DeclNode<Decl>; 91def FileScopeAsm : DeclNode<Decl>; 92def AccessSpec : DeclNode<Decl>; 93def Friend : DeclNode<Decl>; 94def FriendTemplate : DeclNode<Decl>; 95def StaticAssert : DeclNode<Decl>; 96def Block : DeclNode<Decl, "blocks">, DeclContext; 97def Captured : DeclNode<Decl>, DeclContext; 98def ClassScopeFunctionSpecialization : DeclNode<Decl>; 99def Import : DeclNode<Decl>; 100def OMPThreadPrivate : DeclNode<Decl>; 101def OMPAllocate : DeclNode<Decl>; 102def OMPRequires : DeclNode<Decl>; 103def Empty : DeclNode<Decl>; 104def RequiresExprBody : DeclNode<Decl>, DeclContext; 105def LifetimeExtendedTemporary : DeclNode<Decl>; 106 107