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