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