]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/llvm/tools/clang/include/clang/Basic/DeclNodes.td
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.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 Named : Decl<1>;
15   def Namespace : DDecl<Named>, DeclContext;
16   def UsingDirective : DDecl<Named>;
17   def NamespaceAlias : DDecl<Named>;
18   def Label : DDecl<Named>;
19   def Type : DDecl<Named, 1>;
20     def TypedefName : DDecl<Type, 1>;
21       def Typedef : DDecl<TypedefName>;
22       def TypeAlias : DDecl<TypedefName>;
23     def UnresolvedUsingTypename : DDecl<Type>;
24     def Tag : DDecl<Type, 1>, DeclContext;
25       def Enum : DDecl<Tag>;
26       def Record : DDecl<Tag>;
27         def CXXRecord : DDecl<Record>;
28           def ClassTemplateSpecialization : DDecl<CXXRecord>;
29             def ClassTemplatePartialSpecialization
30               : DDecl<ClassTemplateSpecialization>;
31     def TemplateTypeParm : DDecl<Type>;
32   def Value : DDecl<Named, 1>;
33     def EnumConstant : DDecl<Value>;
34     def UnresolvedUsingValue : DDecl<Value>;
35     def IndirectField : DDecl<Value>;
36     def Declarator : DDecl<Value, 1>;
37       def Field : DDecl<Declarator>;
38         def ObjCIvar : DDecl<Field>;
39         def ObjCAtDefsField : DDecl<Field>;
40       def MSProperty : DDecl<Declarator>;
41       def Function : DDecl<Declarator>, DeclContext;
42         def CXXMethod : DDecl<Function>;
43           def CXXConstructor : DDecl<CXXMethod>;
44           def CXXDestructor : DDecl<CXXMethod>;
45           def CXXConversion : DDecl<CXXMethod>;
46       def Var : DDecl<Declarator>;
47         def VarTemplateSpecialization : DDecl<Var>;
48           def VarTemplatePartialSpecialization
49             : DDecl<VarTemplateSpecialization>;
50         def ImplicitParam : DDecl<Var>;
51         def ParmVar : DDecl<Var>;
52       def NonTypeTemplateParm : DDecl<Declarator>;
53   def Template : DDecl<Named, 1>;
54     def RedeclarableTemplate : DDecl<Template, 1>;
55       def FunctionTemplate : DDecl<RedeclarableTemplate>;
56       def ClassTemplate : DDecl<RedeclarableTemplate>;
57       def VarTemplate : DDecl<RedeclarableTemplate>;
58       def TypeAliasTemplate : DDecl<RedeclarableTemplate>;
59     def TemplateTemplateParm : DDecl<Template>;
60   def Using : DDecl<Named>;
61   def UsingShadow : DDecl<Named>;
62   def ObjCMethod : DDecl<Named>, DeclContext;
63   def ObjCContainer : DDecl<Named, 1>, DeclContext;
64     def ObjCCategory : DDecl<ObjCContainer>;
65     def ObjCProtocol : DDecl<ObjCContainer>;
66     def ObjCInterface : DDecl<ObjCContainer>;
67     def ObjCImpl : DDecl<ObjCContainer, 1>;
68       def ObjCCategoryImpl : DDecl<ObjCImpl>;
69       def ObjCImplementation : DDecl<ObjCImpl>;
70   def ObjCProperty : DDecl<Named>;
71   def ObjCCompatibleAlias : DDecl<Named>;
72 def LinkageSpec : Decl, DeclContext;
73 def ObjCPropertyImpl : Decl;
74 def FileScopeAsm : Decl;
75 def AccessSpec : Decl;
76 def Friend : Decl;
77 def FriendTemplate : Decl;
78 def StaticAssert : Decl;
79 def Block : Decl, DeclContext;
80 def Captured : Decl, DeclContext;
81 def ClassScopeFunctionSpecialization : Decl;
82 def Import : Decl;
83 def OMPThreadPrivate : Decl;
84 def Empty : Decl;
85