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 CXXMethod : DDecl<Function>;
49 def CXXConstructor : DDecl<CXXMethod>;
50 def CXXDestructor : DDecl<CXXMethod>;
51 def CXXConversion : DDecl<CXXMethod>;
52 def Var : DDecl<Declarator>;
53 def VarTemplateSpecialization : DDecl<Var>;
54 def VarTemplatePartialSpecialization
55 : DDecl<VarTemplateSpecialization>;
56 def ImplicitParam : DDecl<Var>;
57 def ParmVar : DDecl<Var>;
58 def Decomposition : DDecl<Var>;
59 def OMPCapturedExpr : DDecl<Var>;
60 def NonTypeTemplateParm : DDecl<Declarator>;
61 def Template : DDecl<Named, 1>;
62 def RedeclarableTemplate : DDecl<Template, 1>;
63 def FunctionTemplate : DDecl<RedeclarableTemplate>;
64 def ClassTemplate : DDecl<RedeclarableTemplate>;
65 def VarTemplate : DDecl<RedeclarableTemplate>;
66 def TypeAliasTemplate : DDecl<RedeclarableTemplate>;
67 def TemplateTemplateParm : DDecl<Template>;
68 def BuiltinTemplate : DDecl<Template>;
69 def Using : DDecl<Named>;
70 def UsingPack : DDecl<Named>;
71 def UsingShadow : DDecl<Named>;
72 def ConstructorUsingShadow : DDecl<UsingShadow>;
73 def ObjCMethod : DDecl<Named>, DeclContext;
74 def ObjCContainer : DDecl<Named, 1>, DeclContext;
75 def ObjCCategory : DDecl<ObjCContainer>;
76 def ObjCProtocol : DDecl<ObjCContainer>;
77 def ObjCInterface : DDecl<ObjCContainer>;
78 def ObjCImpl : DDecl<ObjCContainer, 1>;
79 def ObjCCategoryImpl : DDecl<ObjCImpl>;
80 def ObjCImplementation : DDecl<ObjCImpl>;
81 def ObjCProperty : DDecl<Named>;
82 def ObjCCompatibleAlias : DDecl<Named>;
83 def LinkageSpec : Decl, DeclContext;
84 def Export : Decl, DeclContext;
85 def ObjCPropertyImpl : Decl;
86 def FileScopeAsm : Decl;
87 def AccessSpec : Decl;
89 def FriendTemplate : Decl;
90 def StaticAssert : Decl;
91 def Block : Decl, DeclContext;
92 def Captured : Decl, DeclContext;
93 def ClassScopeFunctionSpecialization : Decl;
95 def OMPThreadPrivate : Decl;