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