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;
15 def Namespace : DDecl<Named>, DeclContext;
16 def UsingDirective : DDecl<Named>;
17 def NamespaceAlias : DDecl<Named>;
18 def Type : DDecl<Named, 1>;
19 def Typedef : DDecl<Type>;
20 def UnresolvedUsingTypename : DDecl<Type>;
21 def Tag : DDecl<Type, 1>, DeclContext;
22 def Enum : DDecl<Tag>;
23 def Record : DDecl<Tag>;
24 def CXXRecord : DDecl<Record>;
25 def ClassTemplateSpecialization : DDecl<CXXRecord>;
26 def ClassTemplatePartialSpecialization
27 : DDecl<ClassTemplateSpecialization>;
28 def TemplateTypeParm : DDecl<Type>;
29 def Value : DDecl<Named, 1>;
30 def EnumConstant : DDecl<Value>;
31 def UnresolvedUsingValue : DDecl<Value>;
32 def Declarator : DDecl<Value, 1>;
33 def Function : DDecl<Declarator>, DeclContext;
34 def CXXMethod : DDecl<Function>;
35 def CXXConstructor : DDecl<CXXMethod>;
36 def CXXDestructor : DDecl<CXXMethod>;
37 def CXXConversion : DDecl<CXXMethod>;
38 def Field : DDecl<Declarator>;
39 def ObjCIvar : DDecl<Field>;
40 def ObjCAtDefsField : DDecl<Field>;
41 def Var : DDecl<Declarator>;
42 def ImplicitParam : DDecl<Var>;
43 def ParmVar : DDecl<Var>;
44 def NonTypeTemplateParm : DDecl<Var>;
45 def Template : DDecl<Named, 1>;
46 def RedeclarableTemplate : DDecl<Template, 1>;
47 def FunctionTemplate : DDecl<RedeclarableTemplate>;
48 def ClassTemplate : DDecl<RedeclarableTemplate>;
49 def TemplateTemplateParm : DDecl<Template>;
50 def Using : DDecl<Named>;
51 def UsingShadow : DDecl<Named>;
52 def ObjCMethod : DDecl<Named>, DeclContext;
53 def ObjCContainer : DDecl<Named, 1>, DeclContext;
54 def ObjCCategory : DDecl<ObjCContainer>;
55 def ObjCProtocol : DDecl<ObjCContainer>;
56 def ObjCInterface : DDecl<ObjCContainer>;
57 def ObjCImpl : DDecl<ObjCContainer, 1>;
58 def ObjCCategoryImpl : DDecl<ObjCImpl>;
59 def ObjCImplementation : DDecl<ObjCImpl>;
60 def ObjCProperty : DDecl<Named>;
61 def ObjCCompatibleAlias : DDecl<Named>;
62 def LinkageSpec : Decl, DeclContext;
63 def ObjCPropertyImpl : Decl;
64 def ObjCForwardProtocol : Decl;
66 def FileScopeAsm : Decl;
67 def AccessSpec : Decl;
69 def FriendTemplate : Decl;
70 def StaticAssert : Decl;
71 def Block : Decl, DeclContext;