]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/clang/include/clang/Basic/DeclNodes.td
Merge clang trunk r300422 and resolve conflicts.
[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 PragmaComment : Decl;
15 def PragmaDetectMismatch : Decl;
16 def ExternCContext : Decl, DeclContext;
17 def Named : Decl<1>;
18   def Namespace : DDecl<Named>, DeclContext;
19   def UsingDirective : DDecl<Named>;
20   def NamespaceAlias : DDecl<Named>;
21   def Label : DDecl<Named>;
22   def Type : DDecl<Named, 1>;
23     def TypedefName : DDecl<Type, 1>;
24       def Typedef : DDecl<TypedefName>;
25       def TypeAlias : DDecl<TypedefName>;
26       def ObjCTypeParam : DDecl<TypedefName>;
27     def UnresolvedUsingTypename : DDecl<Type>;
28     def Tag : DDecl<Type, 1>, DeclContext;
29       def Enum : DDecl<Tag>;
30       def Record : DDecl<Tag>;
31         def CXXRecord : DDecl<Record>;
32           def ClassTemplateSpecialization : DDecl<CXXRecord>;
33             def ClassTemplatePartialSpecialization
34               : DDecl<ClassTemplateSpecialization>;
35     def TemplateTypeParm : DDecl<Type>;
36   def Value : DDecl<Named, 1>;
37     def EnumConstant : DDecl<Value>;
38     def UnresolvedUsingValue : DDecl<Value>;
39     def IndirectField : DDecl<Value>;
40     def Binding : DDecl<Value>;
41     def OMPDeclareReduction : DDecl<Value>, DeclContext;
42     def Declarator : DDecl<Value, 1>;
43       def Field : DDecl<Declarator>;
44         def ObjCIvar : DDecl<Field>;
45         def ObjCAtDefsField : DDecl<Field>;
46       def MSProperty : DDecl<Declarator>;
47       def Function : DDecl<Declarator>, DeclContext;
48         def CXXDeductionGuide : DDecl<Function>;
49         def CXXMethod : DDecl<Function>;
50           def CXXConstructor : DDecl<CXXMethod>;
51           def CXXDestructor : DDecl<CXXMethod>;
52           def CXXConversion : DDecl<CXXMethod>;
53       def Var : DDecl<Declarator>;
54         def VarTemplateSpecialization : DDecl<Var>;
55           def VarTemplatePartialSpecialization
56             : DDecl<VarTemplateSpecialization>;
57         def ImplicitParam : DDecl<Var>;
58         def ParmVar : DDecl<Var>;
59         def Decomposition : DDecl<Var>;
60         def OMPCapturedExpr : DDecl<Var>;
61       def NonTypeTemplateParm : DDecl<Declarator>;
62   def Template : DDecl<Named, 1>;
63     def RedeclarableTemplate : DDecl<Template, 1>;
64       def FunctionTemplate : DDecl<RedeclarableTemplate>;
65       def ClassTemplate : DDecl<RedeclarableTemplate>;
66       def VarTemplate : DDecl<RedeclarableTemplate>;
67       def TypeAliasTemplate : DDecl<RedeclarableTemplate>;
68     def TemplateTemplateParm : DDecl<Template>;
69     def BuiltinTemplate : DDecl<Template>;
70   def Using : DDecl<Named>;
71   def UsingPack : DDecl<Named>;
72   def UsingShadow : DDecl<Named>;
73     def ConstructorUsingShadow : DDecl<UsingShadow>;
74   def ObjCMethod : DDecl<Named>, DeclContext;
75   def ObjCContainer : DDecl<Named, 1>, DeclContext;
76     def ObjCCategory : DDecl<ObjCContainer>;
77     def ObjCProtocol : DDecl<ObjCContainer>;
78     def ObjCInterface : DDecl<ObjCContainer>;
79     def ObjCImpl : DDecl<ObjCContainer, 1>;
80       def ObjCCategoryImpl : DDecl<ObjCImpl>;
81       def ObjCImplementation : DDecl<ObjCImpl>;
82   def ObjCProperty : DDecl<Named>;
83   def ObjCCompatibleAlias : DDecl<Named>;
84 def LinkageSpec : Decl, DeclContext;
85 def Export : Decl, DeclContext;
86 def ObjCPropertyImpl : Decl;
87 def FileScopeAsm : Decl;
88 def AccessSpec : Decl;
89 def Friend : Decl;
90 def FriendTemplate : Decl;
91 def StaticAssert : Decl;
92 def Block : Decl, DeclContext;
93 def Captured : Decl, DeclContext;
94 def ClassScopeFunctionSpecialization : Decl;
95 def Import : Decl;
96 def OMPThreadPrivate : Decl;
97 def Empty : Decl;
98