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