summaryrefslogtreecommitdiffstats
path: root/include/clang/Basic/DeclNodes.td
blob: e2f93e02c525a773e3bfcf6648914640b25bc0fa (plain)
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
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 Named : Decl<1>;
  def Namespace : DDecl<Named>, DeclContext;
  def UsingDirective : DDecl<Named>;
  def NamespaceAlias : DDecl<Named>;
  def Type : DDecl<Named, 1>;
    def Typedef : DDecl<Type>;
    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 Declarator : DDecl<Value, 1>;
      def Function : DDecl<Declarator>, DeclContext;
        def CXXMethod : DDecl<Function>;
          def CXXConstructor : DDecl<CXXMethod>;
          def CXXDestructor : DDecl<CXXMethod>;
          def CXXConversion : DDecl<CXXMethod>;
      def Field : DDecl<Declarator>;
        def ObjCIvar : DDecl<Field>;
        def ObjCAtDefsField : DDecl<Field>;
      def Var : DDecl<Declarator>;
        def ImplicitParam : DDecl<Var>;
        def ParmVar : DDecl<Var>;
        def NonTypeTemplateParm : DDecl<Var>;
  def Template : DDecl<Named, 1>;
    def RedeclarableTemplate : DDecl<Template, 1>;
      def FunctionTemplate : DDecl<RedeclarableTemplate>;
      def ClassTemplate : 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 ObjCForwardProtocol : Decl;
def ObjCClass : Decl;
def FileScopeAsm : Decl;
def AccessSpec : Decl;
def Friend : Decl;
def FriendTemplate : Decl;
def StaticAssert : Decl;
def Block : Decl, DeclContext;
OpenPOWER on IntegriCloud