summaryrefslogtreecommitdiffstats
path: root/include/clang/Basic/DeclNodes.td
blob: a184b480f7c0b8ead08e21f91421334845704e9e (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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
class AttrSubject;

class Decl<string diagSpelling = "", bit abstract = 0> : AttrSubject {
  bit Abstract = abstract;
  string DiagSpelling = diagSpelling;
}

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

class DeclContext {}

def TranslationUnit : Decl, DeclContext;
def PragmaComment : Decl;
def PragmaDetectMismatch : Decl;
def ExternCContext : Decl, DeclContext;
def Named : Decl<"named declarations", 1>;
  def Namespace : DDecl<Named, "namespaces">, DeclContext;
  def UsingDirective : DDecl<Named>;
  def NamespaceAlias : DDecl<Named>;
  def Label : DDecl<Named, "labels">;
  def Type : DDecl<Named, "types", 1>;
    def TypedefName : DDecl<Type, "typedefs", 1>;
      def Typedef : DDecl<TypedefName>;
      def TypeAlias : DDecl<TypedefName>;
      def ObjCTypeParam : DDecl<TypedefName>;
    def UnresolvedUsingTypename : DDecl<Type>;
    def Tag : DDecl<Type, "tag types", 1>, DeclContext;
      def Enum : DDecl<Tag, "enums">;
      def Record : DDecl<Tag, "structs, unions, classes">;
        def CXXRecord : DDecl<Record, "classes">;
          def ClassTemplateSpecialization : DDecl<CXXRecord>;
            def ClassTemplatePartialSpecialization
              : DDecl<ClassTemplateSpecialization>;
    def TemplateTypeParm : DDecl<Type>;
  def Value : DDecl<Named, "value declarations", 1>;
    def EnumConstant : DDecl<Value, "enumerators">;
    def UnresolvedUsingValue : DDecl<Value>;
    def IndirectField : DDecl<Value>;
    def Binding : DDecl<Value>;
    def OMPDeclareReduction : DDecl<Value>, DeclContext;
    def Declarator : DDecl<Value, "declarators", 1>;
      def Field : DDecl<Declarator, "non-static data members">;
        def ObjCIvar : DDecl<Field>;
        def ObjCAtDefsField : DDecl<Field>;
      def MSProperty : DDecl<Declarator>;
      def Function : DDecl<Declarator, "functions">, DeclContext;
        def CXXDeductionGuide : DDecl<Function>;
        def CXXMethod : DDecl<Function>;
          def CXXConstructor : DDecl<CXXMethod>;
          def CXXDestructor : DDecl<CXXMethod>;
          def CXXConversion : DDecl<CXXMethod>;
      def Var : DDecl<Declarator, "variables">;
        def VarTemplateSpecialization : DDecl<Var>;
          def VarTemplatePartialSpecialization
            : DDecl<VarTemplateSpecialization>;
        def ImplicitParam : DDecl<Var>;
        def ParmVar : DDecl<Var, "parameters">;
        def Decomposition : DDecl<Var>;
        def OMPCapturedExpr : DDecl<Var>;
      def NonTypeTemplateParm : DDecl<Declarator>;
  def Template : DDecl<Named, "templates", 1>;
    def RedeclarableTemplate : DDecl<Template, "redeclarable templates", 1>;
      def FunctionTemplate : DDecl<RedeclarableTemplate>;
      def ClassTemplate : DDecl<RedeclarableTemplate>;
      def VarTemplate : DDecl<RedeclarableTemplate>;
      def TypeAliasTemplate : DDecl<RedeclarableTemplate>;
    def TemplateTemplateParm : DDecl<Template>;
    def BuiltinTemplate : DDecl<Template>;
  def Using : DDecl<Named>;
  def UsingPack : DDecl<Named>;
  def UsingShadow : DDecl<Named>;
    def ConstructorUsingShadow : DDecl<UsingShadow>;
  def ObjCMethod : DDecl<Named, "Objective-C methods">, DeclContext;
  def ObjCContainer : DDecl<Named, "Objective-C containers", 1>, DeclContext;
    def ObjCCategory : DDecl<ObjCContainer>;
    def ObjCProtocol : DDecl<ObjCContainer, "Objective-C protocols">;
    def ObjCInterface : DDecl<ObjCContainer, "Objective-C interfaces">;
    def ObjCImpl
        : DDecl<ObjCContainer, "Objective-C implementation declarations", 1>;
      def ObjCCategoryImpl : DDecl<ObjCImpl>;
      def ObjCImplementation : DDecl<ObjCImpl>;
  def ObjCProperty : DDecl<Named, "Objective-C properties">;
  def ObjCCompatibleAlias : DDecl<Named>;
def LinkageSpec : Decl, DeclContext;
def Export : Decl, DeclContext;
def ObjCPropertyImpl : Decl;
def FileScopeAsm : Decl;
def AccessSpec : Decl;
def Friend : Decl;
def FriendTemplate : Decl;
def StaticAssert : Decl;
def Block : Decl<"blocks">, DeclContext;
def Captured : Decl, DeclContext;
def ClassScopeFunctionSpecialization : Decl;
def Import : Decl;
def OMPThreadPrivate : Decl;
def OMPRequires : Decl;
def Empty : Decl;