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 ExternCContext : Decl, DeclContext;
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 ObjCTypeParam : DDecl<TypedefName>;
25 def UnresolvedUsingTypename : DDecl<Type>;
26 def Tag : DDecl<Type, 1>, DeclContext;
27 def Enum : DDecl<Tag>;
28 def Record : DDecl<Tag>;
29 def CXXRecord : DDecl<Record>;
30 def ClassTemplateSpecialization : DDecl<CXXRecord>;
31 def ClassTemplatePartialSpecialization
32 : DDecl<ClassTemplateSpecialization>;
33 def TemplateTypeParm : DDecl<Type>;
34 def Value : DDecl<Named, 1>;
35 def EnumConstant : DDecl<Value>;
36 def UnresolvedUsingValue : DDecl<Value>;
37 def IndirectField : DDecl<Value>;
38 def Declarator : DDecl<Value, 1>;
39 def Field : DDecl<Declarator>;
40 def ObjCIvar : DDecl<Field>;
41 def ObjCAtDefsField : DDecl<Field>;
42 def MSProperty : DDecl<Declarator>;
43 def Function : DDecl<Declarator>, DeclContext;
44 def CXXMethod : DDecl<Function>;
45 def CXXConstructor : DDecl<CXXMethod>;
46 def CXXDestructor : DDecl<CXXMethod>;
47 def CXXConversion : DDecl<CXXMethod>;
48 def Var : DDecl<Declarator>;
49 def VarTemplateSpecialization : DDecl<Var>;
50 def VarTemplatePartialSpecialization
51 : DDecl<VarTemplateSpecialization>;
52 def ImplicitParam : DDecl<Var>;
53 def ParmVar : DDecl<Var>;
54 def NonTypeTemplateParm : DDecl<Declarator>;
55 def Template : DDecl<Named, 1>;
56 def RedeclarableTemplate : DDecl<Template, 1>;
57 def FunctionTemplate : DDecl<RedeclarableTemplate>;
58 def ClassTemplate : DDecl<RedeclarableTemplate>;
59 def VarTemplate : DDecl<RedeclarableTemplate>;
60 def TypeAliasTemplate : DDecl<RedeclarableTemplate>;
61 def TemplateTemplateParm : DDecl<Template>;
62 def BuiltinTemplate : DDecl<Template>;
63 def Using : DDecl<Named>;
64 def UsingShadow : DDecl<Named>;
65 def ObjCMethod : DDecl<Named>, DeclContext;
66 def ObjCContainer : DDecl<Named, 1>, DeclContext;
67 def ObjCCategory : DDecl<ObjCContainer>;
68 def ObjCProtocol : DDecl<ObjCContainer>;
69 def ObjCInterface : DDecl<ObjCContainer>;
70 def ObjCImpl : DDecl<ObjCContainer, 1>;
71 def ObjCCategoryImpl : DDecl<ObjCImpl>;
72 def ObjCImplementation : DDecl<ObjCImpl>;
73 def ObjCProperty : DDecl<Named>;
74 def ObjCCompatibleAlias : DDecl<Named>;
75 def LinkageSpec : Decl, DeclContext;
76 def ObjCPropertyImpl : Decl;
77 def FileScopeAsm : Decl;
78 def AccessSpec : Decl;
80 def FriendTemplate : Decl;
81 def StaticAssert : Decl;
82 def Block : Decl, DeclContext;
83 def Captured : Decl, DeclContext;
84 def ClassScopeFunctionSpecialization : Decl;
86 def OMPThreadPrivate : Decl;