Home | History | Annotate | Download | only in Basic
      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 
     86