1class AttrSubject; 2 3class Decl<bit abstract = 0> : AttrSubject { 4 bit Abstract = abstract; 5} 6 7class DDecl<Decl base, bit abstract = 0> : Decl<abstract> { 8 Decl Base = base; 9} 10 11class DeclContext { } 12 13def TranslationUnit : Decl, DeclContext; 14def ExternCContext : Decl, DeclContext; 15def Named : Decl<1>; 16 def Namespace : DDecl<Named>, DeclContext; 17 def UsingDirective : DDecl<Named>; 18 def NamespaceAlias : DDecl<Named>; 19 def Label : DDecl<Named>; 20 def Type : DDecl<Named, 1>; 21 def TypedefName : DDecl<Type, 1>; 22 def Typedef : DDecl<TypedefName>; 23 def TypeAlias : DDecl<TypedefName>; 24 def UnresolvedUsingTypename : DDecl<Type>; 25 def Tag : DDecl<Type, 1>, DeclContext; 26 def Enum : DDecl<Tag>; 27 def Record : DDecl<Tag>; 28 def CXXRecord : DDecl<Record>; 29 def ClassTemplateSpecialization : DDecl<CXXRecord>; 30 def ClassTemplatePartialSpecialization 31 : DDecl<ClassTemplateSpecialization>; 32 def TemplateTypeParm : DDecl<Type>; 33 def Value : DDecl<Named, 1>; 34 def EnumConstant : DDecl<Value>; 35 def UnresolvedUsingValue : DDecl<Value>; 36 def IndirectField : DDecl<Value>; 37 def Declarator : DDecl<Value, 1>; 38 def Field : DDecl<Declarator>; 39 def ObjCIvar : DDecl<Field>; 40 def ObjCAtDefsField : DDecl<Field>; 41 def MSProperty : DDecl<Declarator>; 42 def Function : DDecl<Declarator>, DeclContext; 43 def CXXMethod : DDecl<Function>; 44 def CXXConstructor : DDecl<CXXMethod>; 45 def CXXDestructor : DDecl<CXXMethod>; 46 def CXXConversion : DDecl<CXXMethod>; 47 def Var : DDecl<Declarator>; 48 def VarTemplateSpecialization : DDecl<Var>; 49 def VarTemplatePartialSpecialization 50 : DDecl<VarTemplateSpecialization>; 51 def ImplicitParam : DDecl<Var>; 52 def ParmVar : DDecl<Var>; 53 def NonTypeTemplateParm : DDecl<Declarator>; 54 def Template : DDecl<Named, 1>; 55 def RedeclarableTemplate : DDecl<Template, 1>; 56 def FunctionTemplate : DDecl<RedeclarableTemplate>; 57 def ClassTemplate : DDecl<RedeclarableTemplate>; 58 def VarTemplate : DDecl<RedeclarableTemplate>; 59 def TypeAliasTemplate : DDecl<RedeclarableTemplate>; 60 def TemplateTemplateParm : DDecl<Template>; 61 def Using : DDecl<Named>; 62 def UsingShadow : DDecl<Named>; 63 def ObjCMethod : DDecl<Named>, DeclContext; 64 def ObjCContainer : DDecl<Named, 1>, DeclContext; 65 def ObjCCategory : DDecl<ObjCContainer>; 66 def ObjCProtocol : DDecl<ObjCContainer>; 67 def ObjCInterface : DDecl<ObjCContainer>; 68 def ObjCImpl : DDecl<ObjCContainer, 1>; 69 def ObjCCategoryImpl : DDecl<ObjCImpl>; 70 def ObjCImplementation : DDecl<ObjCImpl>; 71 def ObjCProperty : DDecl<Named>; 72 def ObjCCompatibleAlias : DDecl<Named>; 73def LinkageSpec : Decl, DeclContext; 74def ObjCPropertyImpl : Decl; 75def FileScopeAsm : Decl; 76def AccessSpec : Decl; 77def Friend : Decl; 78def FriendTemplate : Decl; 79def StaticAssert : Decl; 80def Block : Decl, DeclContext; 81def Captured : Decl, DeclContext; 82def ClassScopeFunctionSpecialization : Decl; 83def Import : Decl; 84def OMPThreadPrivate : Decl; 85def Empty : Decl; 86 87