Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SynTree/Declaration.h

    r07de76b r312029a  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Dec 13 23:11:22 2019
    13 // Update Count     : 157
     12// Last Modified On : Wed Dec 11 16:48:20 2019
     13// Update Count     : 149
    1414//
    1515
     
    2424#include "BaseSyntaxNode.h"      // for BaseSyntaxNode
    2525#include "Mutator.h"             // for Mutator
    26 #include "LinkageSpec.h"         // for Spec, Cforall
     26#include "Parser/LinkageSpec.h"  // for Spec, Cforall
    2727#include "SynTree.h"             // for UniqueId
    2828#include "SynTree/Type.h"        // for Type, Type::StorageClasses, Type::Fu...
     
    4343        bool extension = false;
    4444
    45         Declaration( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage );
    46         Declaration( const Declaration & other );
     45        Declaration( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage );
     46        Declaration( const Declaration &other );
    4747        virtual ~Declaration();
    4848
    49         const std::string & get_name() const { return name; }
     49        const std::string &get_name() const { return name; }
    5050        void set_name( std::string newValue ) { name = newValue; }
    5151
     
    5858
    5959        bool get_extension() const { return extension; }
    60         Declaration * set_extension( bool exten ) { extension = exten; return this; }
     60        Declaration *set_extension( bool exten ) { extension = exten; return this; }
    6161
    6262        void fixUniqueId( void );
    63         virtual Declaration * clone() const override = 0;
     63        virtual Declaration *clone() const override = 0;
    6464        virtual void accept( Visitor & v ) override = 0;
    6565        virtual void accept( Visitor & v ) const override = 0;
    66         virtual Declaration * acceptMutator( Mutator & m ) override = 0;
    67         virtual void print( std::ostream & os, Indenter indent = {} ) const override = 0;
    68         virtual void printShort( std::ostream & os, Indenter indent = {} ) const = 0;
     66        virtual Declaration *acceptMutator( Mutator &m ) override = 0;
     67        virtual void print( std::ostream &os, Indenter indent = {} ) const override = 0;
     68        virtual void printShort( std::ostream &os, Indenter indent = {} ) const = 0;
    6969
    7070        UniqueId uniqueId;
     
    8080        int scopeLevel = 0;
    8181
    82         Expression * asmName;
     82        Expression *asmName;
    8383        std::list< Attribute * > attributes;
    8484        bool isDeleted = false;
    8585
    86         DeclarationWithType( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, Type::FuncSpecifiers fs );
    87         DeclarationWithType( const DeclarationWithType & other );
     86        DeclarationWithType( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, Type::FuncSpecifiers fs );
     87        DeclarationWithType( const DeclarationWithType &other );
    8888        virtual ~DeclarationWithType();
    8989
     
    9696        DeclarationWithType * set_scopeLevel( int newValue ) { scopeLevel = newValue; return this; }
    9797
    98         Expression * get_asmName() const { return asmName; }
    99         DeclarationWithType * set_asmName( Expression * newValue ) { asmName = newValue; return this; }
     98        Expression *get_asmName() const { return asmName; }
     99        DeclarationWithType * set_asmName( Expression *newValue ) { asmName = newValue; return this; }
    100100
    101101        std::list< Attribute * >& get_attributes() { return attributes; }
     
    105105        //void set_functionSpecifiers( Type::FuncSpecifiers newValue ) { fs = newValue; }
    106106
    107         virtual DeclarationWithType * clone() const override = 0;
    108         virtual DeclarationWithType * acceptMutator( Mutator & m )  override = 0;
     107        virtual DeclarationWithType *clone() const override = 0;
     108        virtual DeclarationWithType *acceptMutator( Mutator &m )  override = 0;
    109109
    110110        virtual Type * get_type() const = 0;
     
    118118        typedef DeclarationWithType Parent;
    119119  public:
    120         Type * type;
    121         Initializer * init;
    122         Expression * bitfieldWidth;
    123 
    124         ObjectDecl( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage, Expression * bitfieldWidth, Type * type, Initializer * init,
     120        Type *type;
     121        Initializer *init;
     122        Expression *bitfieldWidth;
     123
     124        ObjectDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init,
    125125                                const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() );
    126         ObjectDecl( const ObjectDecl & other );
     126        ObjectDecl( const ObjectDecl &other );
    127127        virtual ~ObjectDecl();
    128128
    129129        virtual Type * get_type() const override { return type; }
    130         virtual void set_type(Type * newType) override { type = newType; }
    131 
    132         Initializer * get_init() const { return init; }
    133         void set_init( Initializer * newValue ) { init = newValue; }
    134 
    135         Expression * get_bitfieldWidth() const { return bitfieldWidth; }
    136         void set_bitfieldWidth( Expression * newValue ) { bitfieldWidth = newValue; }
     130        virtual void set_type(Type *newType) override { type = newType; }
     131
     132        Initializer *get_init() const { return init; }
     133        void set_init( Initializer *newValue ) { init = newValue; }
     134
     135        Expression *get_bitfieldWidth() const { return bitfieldWidth; }
     136        void set_bitfieldWidth( Expression *newValue ) { bitfieldWidth = newValue; }
    137137
    138138        static ObjectDecl * newObject( const std::string & name, Type * type, Initializer * init );
    139139
    140         virtual ObjectDecl * clone() const override { return new ObjectDecl( *this ); }
    141         virtual void accept( Visitor & v ) override { v.visit( this ); }
    142         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    143         virtual DeclarationWithType * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
    144         virtual void print( std::ostream & os, Indenter indent = {} ) const override;
    145         virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;
     140        virtual ObjectDecl *clone() const override { return new ObjectDecl( *this ); }
     141        virtual void accept( Visitor & v ) override { v.visit( this ); }
     142        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     143        virtual DeclarationWithType *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
     144        virtual void print( std::ostream &os, Indenter indent = {} ) const override;
     145        virtual void printShort( std::ostream &os, Indenter indent = {} ) const override;
    146146};
    147147
     
    149149        typedef DeclarationWithType Parent;
    150150  public:
    151         FunctionType * type;
    152         CompoundStmt * statements;
     151        FunctionType *type;
     152        CompoundStmt *statements;
    153153        std::list< Expression * > withExprs;
    154154
    155         FunctionDecl( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType * type, CompoundStmt * statements,
     155        FunctionDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements,
    156156                                  const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() );
    157         FunctionDecl( const FunctionDecl & other );
     157        FunctionDecl( const FunctionDecl &other );
    158158        virtual ~FunctionDecl();
    159159
     
    162162
    163163        FunctionType * get_functionType() const { return type; }
    164         void set_functionType( FunctionType * newValue ) { type = newValue; }
    165         CompoundStmt * get_statements() const { return statements; }
    166         void set_statements( CompoundStmt * newValue ) { statements = newValue; }
     164        void set_functionType( FunctionType *newValue ) { type = newValue; }
     165        CompoundStmt *get_statements() const { return statements; }
     166        void set_statements( CompoundStmt *newValue ) { statements = newValue; }
    167167        bool has_body() const { return NULL != statements; }
    168168
    169169        static FunctionDecl * newFunction( const std::string & name, FunctionType * type, CompoundStmt * statements );
    170170
    171         virtual FunctionDecl * clone() const override { return new FunctionDecl( *this ); }
    172         virtual void accept( Visitor & v ) override { v.visit( this ); }
    173         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    174         virtual DeclarationWithType * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
    175         virtual void print( std::ostream & os, Indenter indent = {} ) const override;
    176         virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;
     171        virtual FunctionDecl *clone() const override { return new FunctionDecl( *this ); }
     172        virtual void accept( Visitor & v ) override { v.visit( this ); }
     173        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     174        virtual DeclarationWithType *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
     175        virtual void print( std::ostream &os, Indenter indent = {} ) const override;
     176        virtual void printShort( std::ostream &os, Indenter indent = {} ) const override;
    177177};
    178178
     
    180180        typedef Declaration Parent;
    181181  public:
    182         Type * base;
    183         std::list< TypeDecl * > parameters;
    184         std::list< DeclarationWithType * > assertions;
    185 
    186         NamedTypeDecl( const std::string & name, Type::StorageClasses scs, Type * type );
    187         NamedTypeDecl( const NamedTypeDecl & other );
     182        Type *base;
     183        std::list< TypeDecl* > parameters;
     184        std::list< DeclarationWithType* > assertions;
     185
     186        NamedTypeDecl( const std::string &name, Type::StorageClasses scs, Type *type );
     187        NamedTypeDecl( const NamedTypeDecl &other );
    188188        virtual ~NamedTypeDecl();
    189189
    190         Type * get_base() const { return base; }
    191         void set_base( Type * newValue ) { base = newValue; }
    192         std::list< TypeDecl* > & get_parameters() { return parameters; }
    193         std::list< DeclarationWithType * >& get_assertions() { return assertions; }
     190        Type *get_base() const { return base; }
     191        void set_base( Type *newValue ) { base = newValue; }
     192        std::list< TypeDecl* >& get_parameters() { return parameters; }
     193        std::list< DeclarationWithType* >& get_assertions() { return assertions; }
    194194
    195195        virtual const char * typeString() const = 0;
    196196
    197         virtual NamedTypeDecl * clone() const override = 0;
    198         virtual void print( std::ostream & os, Indenter indent = {} ) const override;
    199         virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;
     197        virtual NamedTypeDecl *clone() const override = 0;
     198        virtual void print( std::ostream &os, Indenter indent = {} ) const override;
     199        virtual void printShort( std::ostream &os, Indenter indent = {} ) const override;
    200200};
    201201
     
    203203        typedef NamedTypeDecl Parent;
    204204  public:
    205         enum Kind { Dtype, Otype, Ftype, Ttype, NUMBER_OF_KINDS };
    206 
    207         Kind kind;
     205        enum Kind { Dtype, Ftype, Ttype, NUMBER_OF_KINDS };
     206
     207        Type * init;
    208208        bool sized;
    209         Type * init;
    210209
    211210        /// Data extracted from a type decl
    212211        struct Data {
    213                 Kind kind;
     212                TypeDecl::Kind kind;
    214213                bool isComplete;
    215214
    216                 Data() : kind( NUMBER_OF_KINDS ), isComplete( false ) {}
    217                 Data( const TypeDecl * typeDecl ) : Data( typeDecl->get_kind(), typeDecl->isComplete() ) {}
     215                Data() : kind( (TypeDecl::Kind)-1 ), isComplete( false ) {}
     216                Data( TypeDecl * typeDecl ) : Data( typeDecl->get_kind(), typeDecl->isComplete() ) {}
    218217                Data( Kind kind, bool isComplete ) : kind( kind ), isComplete( isComplete ) {}
    219                 Data( const Data & d1, const Data & d2 )
    220                         : kind( d1.kind ), isComplete( d1.isComplete || d2.isComplete ) {}
    221 
    222                 bool operator==( const Data & other ) const { return kind == other.kind && isComplete == other.isComplete; }
    223                 bool operator!=( const Data & other ) const { return !(*this == other);}
     218                Data( const Data& d1, const Data& d2 )
     219                : kind( d1.kind ), isComplete ( d1.isComplete || d2.isComplete ) {}
     220
     221                bool operator==(const Data & other) const { return kind == other.kind && isComplete == other.isComplete; }
     222                bool operator!=(const Data & other) const { return !(*this == other);}
    224223        };
    225224
    226         TypeDecl( const std::string & name, Type::StorageClasses scs, Type * type, Kind kind, bool sized, Type * init = nullptr );
    227         TypeDecl( const TypeDecl & other );
     225        TypeDecl( const std::string &name, Type::StorageClasses scs, Type *type, Kind kind, bool sized, Type * init = nullptr );
     226        TypeDecl( const TypeDecl &other );
    228227        virtual ~TypeDecl();
    229228
     
    240239        virtual const char * genTypeString() const;
    241240
    242         virtual TypeDecl * clone() const override { return new TypeDecl( *this ); }
    243         virtual void accept( Visitor & v ) override { v.visit( this ); }
    244         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    245         virtual Declaration * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
    246         virtual void print( std::ostream & os, Indenter indent = {} ) const override;
     241        virtual TypeDecl *clone() const override { return new TypeDecl( *this ); }
     242        virtual void accept( Visitor & v ) override { v.visit( this ); }
     243        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     244        virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
     245        virtual void print( std::ostream &os, Indenter indent = {} ) const override;
     246
     247        Kind kind;
    247248};
    248249
     
    250251        typedef NamedTypeDecl Parent;
    251252  public:
    252         TypedefDecl( const std::string & name, CodeLocation location, Type::StorageClasses scs, Type * type, LinkageSpec::Spec spec = LinkageSpec::Cforall )
     253        TypedefDecl( const std::string &name, CodeLocation location, Type::StorageClasses scs, Type *type, LinkageSpec::Spec spec = LinkageSpec::Cforall )
    253254                : Parent( name, scs, type ) { set_linkage( spec ); this->location = location; }
    254255
    255         TypedefDecl( const TypedefDecl & other ) : Parent( other ) {}
    256 
    257         virtual const char * typeString() const override;
    258 
    259         virtual TypedefDecl * clone() const override { return new TypedefDecl( *this ); }
    260         virtual void accept( Visitor & v ) override { v.visit( this ); }
    261         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    262         virtual Declaration * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
     256        TypedefDecl( const TypedefDecl &other ) : Parent( other ) {}
     257
     258        virtual const char * typeString() const override;
     259
     260        virtual TypedefDecl *clone() const override { return new TypedefDecl( *this ); }
     261        virtual void accept( Visitor & v ) override { v.visit( this ); }
     262        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     263        virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
    263264  private:
    264265};
     
    276277        AggregateDecl * parent = nullptr;
    277278
    278         AggregateDecl( const std::string & name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall );
    279         AggregateDecl( const AggregateDecl & other );
     279        AggregateDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall );
     280        AggregateDecl( const AggregateDecl &other );
    280281        virtual ~AggregateDecl();
    281282
     
    289290        AggregateDecl * set_body( bool body ) { AggregateDecl::body = body; return this; }
    290291
    291         virtual void print( std::ostream & os, Indenter indent = {} ) const override final;
    292         virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;
     292        virtual void print( std::ostream &os, Indenter indent = {} ) const override final;
     293        virtual void printShort( std::ostream &os, Indenter indent = {} ) const override;
    293294  protected:
    294295        virtual const char * typeString() const = 0;
     
    298299        typedef AggregateDecl Parent;
    299300  public:
    300         StructDecl( const std::string & name, Aggregate kind = Struct, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ), kind( kind ) {}
    301         StructDecl( const StructDecl & other ) : Parent( other ), kind( other.kind ) {}
     301        StructDecl( const std::string &name, Aggregate kind = Struct, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ), kind( kind ) {}
     302        StructDecl( const StructDecl &other ) : Parent( other ), kind( other.kind ) {}
    302303
    303304        bool is_coroutine() { return kind == Coroutine; }
     
    305306        bool is_thread() { return kind == Thread; }
    306307
    307         virtual StructDecl * clone() const override { return new StructDecl( *this ); }
    308         virtual void accept( Visitor & v ) override { v.visit( this ); }
    309         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    310         virtual Declaration * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
     308        virtual StructDecl *clone() const override { return new StructDecl( *this ); }
     309        virtual void accept( Visitor & v ) override { v.visit( this ); }
     310        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     311        virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
    311312        Aggregate kind;
    312313  private:
     
    317318        typedef AggregateDecl Parent;
    318319  public:
    319         UnionDecl( const std::string & name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ) {}
    320         UnionDecl( const UnionDecl & other ) : Parent( other ) {}
    321 
    322         virtual UnionDecl * clone() const override { return new UnionDecl( *this ); }
    323         virtual void accept( Visitor & v ) override { v.visit( this ); }
    324         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    325         virtual Declaration * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
     320        UnionDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ) {}
     321        UnionDecl( const UnionDecl &other ) : Parent( other ) {}
     322
     323        virtual UnionDecl *clone() const override { return new UnionDecl( *this ); }
     324        virtual void accept( Visitor & v ) override { v.visit( this ); }
     325        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     326        virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
    326327  private:
    327328        virtual const char * typeString() const override;
     
    331332        typedef AggregateDecl Parent;
    332333  public:
    333         EnumDecl( const std::string & name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ) {}
    334         EnumDecl( const EnumDecl & other ) : Parent( other ) {}
     334        EnumDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ) {}
     335        EnumDecl( const EnumDecl &other ) : Parent( other ) {}
    335336
    336337        bool valueOf( Declaration * enumerator, long long int & value );
    337338
    338         virtual EnumDecl * clone() const override { return new EnumDecl( *this ); }
    339         virtual void accept( Visitor & v ) override { v.visit( this ); }
    340         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    341         virtual Declaration * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
     339        virtual EnumDecl *clone() const override { return new EnumDecl( *this ); }
     340        virtual void accept( Visitor & v ) override { v.visit( this ); }
     341        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     342        virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
    342343  private:
    343344        std::unordered_map< std::string, long long int > enumValues;
     
    348349        typedef AggregateDecl Parent;
    349350  public:
    350         TraitDecl( const std::string & name, const std::list< Attribute * > & attributes, LinkageSpec::Spec linkage ) : Parent( name, attributes, linkage ) {
     351        TraitDecl( const std::string &name, const std::list< Attribute * > & attributes, LinkageSpec::Spec linkage ) : Parent( name, attributes, linkage ) {
    351352                assertf( attributes.empty(), "attribute unsupported for traits" );
    352353        }
    353         TraitDecl( const TraitDecl & other ) : Parent( other ) {}
    354 
    355         virtual TraitDecl * clone() const override { return new TraitDecl( *this ); }
    356         virtual void accept( Visitor & v ) override { v.visit( this ); }
    357         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    358         virtual Declaration * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
     354        TraitDecl( const TraitDecl &other ) : Parent( other ) {}
     355
     356        virtual TraitDecl *clone() const override { return new TraitDecl( *this ); }
     357        virtual void accept( Visitor & v ) override { v.visit( this ); }
     358        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     359        virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
    359360  private:
    360361        virtual const char * typeString() const override;
     
    380381class AsmDecl : public Declaration {
    381382  public:
    382         AsmStmt * stmt;
    383 
    384         AsmDecl( AsmStmt * stmt );
    385         AsmDecl( const AsmDecl & other );
     383        AsmStmt *stmt;
     384
     385        AsmDecl( AsmStmt *stmt );
     386        AsmDecl( const AsmDecl &other );
    386387        virtual ~AsmDecl();
    387388
    388         AsmStmt * get_stmt() { return stmt; }
    389         void set_stmt( AsmStmt * newValue ) { stmt = newValue; }
    390 
    391         virtual AsmDecl * clone() const override { return new AsmDecl( *this ); }
    392         virtual void accept( Visitor & v ) override { v.visit( this ); }
    393         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    394         virtual AsmDecl * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
    395         virtual void print( std::ostream & os, Indenter indent = {} ) const override;
    396         virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;
     389        AsmStmt *get_stmt() { return stmt; }
     390        void set_stmt( AsmStmt *newValue ) { stmt = newValue; }
     391
     392        virtual AsmDecl *clone() const override { return new AsmDecl( *this ); }
     393        virtual void accept( Visitor & v ) override { v.visit( this ); }
     394        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     395        virtual AsmDecl *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
     396        virtual void print( std::ostream &os, Indenter indent = {} ) const override;
     397        virtual void printShort( std::ostream &os, Indenter indent = {} ) const override;
    397398};
    398399
     
    409410        virtual void accept( Visitor & v ) override { v.visit( this ); }
    410411        virtual void accept( Visitor & v ) const override { v.visit( this ); }
    411         virtual StaticAssertDecl * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
    412         virtual void print( std::ostream & os, Indenter indent = {} ) const override;
    413         virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;
     412        virtual StaticAssertDecl * acceptMutator( Mutator &m )  override { return m.mutate( this ); }
     413        virtual void print( std::ostream &os, Indenter indent = {} ) const override;
     414        virtual void printShort( std::ostream &os, Indenter indent = {} ) const override;
    414415};
    415416
Note: See TracChangeset for help on using the changeset viewer.