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