]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/clang/include/clang/Basic/DeclNodes.td
MFV r368607:
[FreeBSD/FreeBSD.git] / contrib / llvm-project / clang / include / clang / Basic / DeclNodes.td
1 include "clang/Basic/ASTNode.td"
2
3 class DeclNode<DeclNode base, string diagSpelling = "", bit abstract = 0>
4     : ASTNode, AttrSubject {
5   DeclNode Base = base;
6   bit Abstract = abstract;
7   string DiagSpelling = diagSpelling;
8 }
9
10 class DeclContext {}
11
12 def Decl : DeclNode<?, "", 1>;
13 def TranslationUnit : DeclNode<Decl>, DeclContext;
14 def PragmaComment : DeclNode<Decl>;
15 def PragmaDetectMismatch : DeclNode<Decl>;
16 def ExternCContext : DeclNode<Decl>, DeclContext;
17 def Named : DeclNode<Decl, "named declarations", 1>;
18   def Namespace : DeclNode<Named, "namespaces">, DeclContext;
19   def UsingDirective : DeclNode<Named>;
20   def NamespaceAlias : DeclNode<Named>;
21   def Label : DeclNode<Named, "labels">;
22   def Type : DeclNode<Named, "types", 1>;
23     def TypedefName : DeclNode<Type, "typedefs", 1>;
24       def Typedef : DeclNode<TypedefName>;
25       def TypeAlias : DeclNode<TypedefName>;
26       def ObjCTypeParam : DeclNode<TypedefName>;
27     def UnresolvedUsingTypename : DeclNode<Type>;
28     def Tag : DeclNode<Type, "tag types", 1>, DeclContext;
29       def Enum : DeclNode<Tag, "enums">;
30       def Record : DeclNode<Tag, "structs, unions, classes">;
31         def CXXRecord : DeclNode<Record, "classes">;
32           def ClassTemplateSpecialization : DeclNode<CXXRecord>;
33             def ClassTemplatePartialSpecialization
34               : DeclNode<ClassTemplateSpecialization>;
35     def TemplateTypeParm : DeclNode<Type>;
36   def Value : DeclNode<Named, "value declarations", 1>;
37     def EnumConstant : DeclNode<Value, "enumerators">;
38     def UnresolvedUsingValue : DeclNode<Value>;
39     def IndirectField : DeclNode<Value>;
40     def Binding : DeclNode<Value>;
41     def OMPDeclareReduction : DeclNode<Value>, DeclContext;
42     def OMPDeclareMapper : DeclNode<Value>, DeclContext;
43     def MSGuid : DeclNode<Value>;
44     def Declarator : DeclNode<Value, "declarators", 1>;
45       def Field : DeclNode<Declarator, "non-static data members">;
46         def ObjCIvar : DeclNode<Field>;
47         def ObjCAtDefsField : DeclNode<Field>;
48       def MSProperty : DeclNode<Declarator>;
49       def Function : DeclNode<Declarator, "functions">, DeclContext;
50         def CXXDeductionGuide : DeclNode<Function>;
51         def CXXMethod : DeclNode<Function>;
52           def CXXConstructor : DeclNode<CXXMethod>;
53           def CXXDestructor : DeclNode<CXXMethod>;
54           def CXXConversion : DeclNode<CXXMethod>;
55       def Var : DeclNode<Declarator, "variables">;
56         def VarTemplateSpecialization : DeclNode<Var>;
57           def VarTemplatePartialSpecialization
58             : DeclNode<VarTemplateSpecialization>;
59         def ImplicitParam : DeclNode<Var>;
60         def ParmVar : DeclNode<Var, "parameters">;
61         def Decomposition : DeclNode<Var>;
62         def OMPCapturedExpr : DeclNode<Var>;
63       def NonTypeTemplateParm : DeclNode<Declarator>;
64   def Template : DeclNode<Named, "templates", 1>;
65     def RedeclarableTemplate : DeclNode<Template, "redeclarable templates", 1>;
66       def FunctionTemplate : DeclNode<RedeclarableTemplate>;
67       def ClassTemplate : DeclNode<RedeclarableTemplate>;
68       def VarTemplate : DeclNode<RedeclarableTemplate>;
69       def TypeAliasTemplate : DeclNode<RedeclarableTemplate>;
70     def TemplateTemplateParm : DeclNode<Template>;
71     def BuiltinTemplate : DeclNode<Template>;
72     def Concept : DeclNode<Template>;
73   def Using : DeclNode<Named>;
74   def UsingPack : DeclNode<Named>;
75   def UsingShadow : DeclNode<Named>;
76     def ConstructorUsingShadow : DeclNode<UsingShadow>;
77   def ObjCMethod : DeclNode<Named, "Objective-C methods">, DeclContext;
78   def ObjCContainer : DeclNode<Named, "Objective-C containers", 1>, DeclContext;
79     def ObjCCategory : DeclNode<ObjCContainer>;
80     def ObjCProtocol : DeclNode<ObjCContainer, "Objective-C protocols">;
81     def ObjCInterface : DeclNode<ObjCContainer, "Objective-C interfaces">;
82     def ObjCImpl
83         : DeclNode<ObjCContainer, "Objective-C implementation declarations", 1>;
84       def ObjCCategoryImpl : DeclNode<ObjCImpl>;
85       def ObjCImplementation : DeclNode<ObjCImpl>;
86   def ObjCProperty : DeclNode<Named, "Objective-C properties">;
87   def ObjCCompatibleAlias : DeclNode<Named>;
88 def LinkageSpec : DeclNode<Decl>, DeclContext;
89 def Export : DeclNode<Decl>, DeclContext;
90 def ObjCPropertyImpl : DeclNode<Decl>;
91 def FileScopeAsm : DeclNode<Decl>;
92 def AccessSpec : DeclNode<Decl>;
93 def Friend : DeclNode<Decl>;
94 def FriendTemplate : DeclNode<Decl>;
95 def StaticAssert : DeclNode<Decl>;
96 def Block : DeclNode<Decl, "blocks">, DeclContext;
97 def Captured : DeclNode<Decl>, DeclContext;
98 def ClassScopeFunctionSpecialization : DeclNode<Decl>;
99 def Import : DeclNode<Decl>;
100 def OMPThreadPrivate : DeclNode<Decl>;
101 def OMPAllocate : DeclNode<Decl>;
102 def OMPRequires : DeclNode<Decl>;
103 def Empty : DeclNode<Decl>;
104 def RequiresExprBody : DeclNode<Decl>, DeclContext;
105 def LifetimeExtendedTemporary : DeclNode<Decl>;
106