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