aboutsummaryrefslogtreecommitdiff
path: root/include/clang/Basic/DeclNodes.td
blob: dece8f9ed2ec6860e3f7f2cc9ac7bbabc1599cee (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
class AttrSubject;

class Decl<bit abstract = 0> : AttrSubject {
  bit Abstract = abstract;
}

class DDecl<Decl base, bit abstract = 0> : Decl<abstract> {
  Decl Base = base;
}

class DeclContext { }

def TranslationUnit : Decl, DeclContext;
def ExternCContext : Decl, DeclContext;
def Named : Decl<1>;
  def Namespace : DDecl<Named>, DeclContext;
  def UsingDirective : DDecl<Named>;
  def NamespaceAlias : DDecl<Named>;
  def Label : DDecl<Named>;
  def Type : DDecl<Named, 1>;
    def TypedefName : DDecl<Type, 1>;
      def Typedef : DDecl<TypedefName>;
      def TypeAlias : DDecl<TypedefName>;
    def UnresolvedUsingTypename : DDecl<Type>;
    def Tag : DDecl<Type, 1>, DeclContext;
      def Enum : DDecl<Tag>;
      def Record : DDecl<Tag>;
        def CXXRecord : DDecl<Record>;
          def ClassTemplateSpecialization : DDecl<CXXRecord>;
            def ClassTemplatePartialSpecialization
              : DDecl<ClassTemplateSpecialization>;
    def TemplateTypeParm : DDecl<Type>;
  def Value : DDecl<Named, 1>;
    def EnumConstant : DDecl<Value>;
    def UnresolvedUsingValue : DDecl<Value>;
    def IndirectField : DDecl<Value>;
    def Declarator : DDecl<Value, 1>;
      def Field : DDecl<Declarator>;
        def ObjCIvar : DDecl<Field>;
        def ObjCAtDefsField : DDecl<Field>;
      def MSProperty : DDecl<Declarator>;
      def Function : DDecl<Declarator>, DeclContext;
        def CXXMethod : DDecl<Function>;
          def CXXConstructor : DDecl<CXXMethod>;
          def CXXDestructor : DDecl<CXXMethod>;
          def CXXConversion : DDecl<CXXMethod>;
      def Var : DDecl<Declarator>;
        def VarTemplateSpecialization : DDecl<Var>;
          def VarTemplatePartialSpecialization
            : DDecl<VarTemplateSpecialization>;
        def ImplicitParam : DDecl<Var>;
        def ParmVar : DDecl<Var>;
      def NonTypeTemplateParm : DDecl<Declarator>;
  def Template : DDecl<Named, 1>;
    def RedeclarableTemplate : DDecl<Template, 1>;
      def FunctionTemplate : DDecl<RedeclarableTemplate>;
      def ClassTemplate : DDecl<RedeclarableTemplate>;
      def VarTemplate : DDecl<RedeclarableTemplate>;
      def TypeAliasTemplate : DDecl<RedeclarableTemplate>;
    def TemplateTemplateParm : DDecl<Template>;
  def Using : DDecl<Named>;
  def UsingShadow : DDecl<Named>;
  def ObjCMethod : DDecl<Named>, DeclContext;
  def ObjCContainer : DDecl<Named, 1>, DeclContext;
    def ObjCCategory : DDecl<ObjCContainer>;
    def ObjCProtocol : DDecl<ObjCContainer>;
    def ObjCInterface : DDecl<ObjCContainer>;
    def ObjCImpl : DDecl<ObjCContainer, 1>;
      def ObjCCategoryImpl : DDecl<ObjCImpl>;
      def ObjCImplementation : DDecl<ObjCImpl>;
  def ObjCProperty : DDecl<Named>;
  def ObjCCompatibleAlias : DDecl<Named>;
def LinkageSpec : Decl, DeclContext;
def ObjCPropertyImpl : Decl;
def FileScopeAsm : Decl;
def AccessSpec : Decl;
def Friend : Decl;
def FriendTemplate : Decl;
def StaticAssert : Decl;
def Block : Decl, DeclContext;
def Captured : Decl, DeclContext;
def ClassScopeFunctionSpecialization : Decl;
def Import : Decl;
def OMPThreadPrivate : Decl;
def Empty : Decl;