Changeset d67cdb7 for src/SynTree
- Timestamp:
- Sep 26, 2017, 11:27:38 PM (8 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 5dc26f5
- Parents:
- 201aeb9
- Location:
- src/SynTree
- Files:
-
- 2 deleted
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/BaseSyntaxNode.h
r201aeb9 rd67cdb7 26 26 27 27 virtual void accept( Visitor & v ) = 0; 28 virtual void print( std::ostream & os, int indent = 0 ) const = 0;28 virtual void print( std::ostream & os, int indent = 0 ) const = 0; 29 29 }; 30 31 std::ostream & operator<<( std::ostream & out, const BaseSyntaxNode * node ); 30 32 31 33 // Local Variables: // -
src/SynTree/CompoundStmt.cc
r201aeb9 rd67cdb7 29 29 30 30 CompoundStmt::CompoundStmt( std::list<Label> labels ) : Statement( labels ) { 31 } 32 33 CompoundStmt::CompoundStmt( std::list<Statement *> stmts ) : Statement( noLabels ), kids( stmts ) { 31 34 } 32 35 -
src/SynTree/Constant.cc
r201aeb9 rd67cdb7 32 32 Constant Constant::from_bool( bool b ) { 33 33 return Constant( new BasicType( Type::Qualifiers(), BasicType::Bool ), b ? "1" : "0" , (unsigned long long int)b ); 34 } 35 36 Constant Constant::from_char( char c ) { 37 return Constant( new BasicType( Type::Qualifiers(), BasicType::Char ), std::to_string( c ), (unsigned long long int)c ); 34 38 } 35 39 -
src/SynTree/Constant.h
r201aeb9 rd67cdb7 40 40 /// generates a boolean constant of the given bool 41 41 static Constant from_bool( bool b ); 42 /// generates a char constant of the given char 43 static Constant from_char( char c ); 42 44 /// generates an integer constant of the given int 43 45 static Constant from_int( int i ); -
src/SynTree/Declaration.cc
r201aeb9 rd67cdb7 59 59 } 60 60 61 std::ostream & operator<<( std::ostream & out, const Declaration * decl ) {62 if ( decl ){63 decl->print( out );64 } else {65 out << "nullptr";66 }67 return out;68 }69 70 61 71 62 AsmDecl::AsmDecl( AsmStmt *stmt ) : Declaration( "", Type::StorageClasses(), LinkageSpec::C ), stmt( stmt ) { -
src/SynTree/Declaration.h
r201aeb9 rd67cdb7 62 62 void fixUniqueId( void ); 63 63 virtual Declaration *clone() const = 0; 64 virtual void accept( Visitor &v ) = 0;64 virtual void accept( Visitor &v ) override = 0; 65 65 virtual Declaration *acceptMutator( Mutator &m ) = 0; 66 virtual void print( std::ostream &os, int indent = 0 ) const = 0;66 virtual void print( std::ostream &os, int indent = 0 ) const override = 0; 67 67 virtual void printShort( std::ostream &os, int indent = 0 ) const = 0; 68 68 … … 106 106 //void set_functionSpecifiers( Type::FuncSpecifiers newValue ) { fs = newValue; } 107 107 108 virtual DeclarationWithType *clone() const = 0;109 virtual DeclarationWithType *acceptMutator( Mutator &m ) = 0;108 virtual DeclarationWithType *clone() const override = 0; 109 virtual DeclarationWithType *acceptMutator( Mutator &m ) override = 0; 110 110 111 111 virtual Type * get_type() const = 0; … … 128 128 virtual ~ObjectDecl(); 129 129 130 virtual Type * get_type() const { return type; }131 virtual void set_type(Type *newType) { type = newType; }130 virtual Type * get_type() const override { return type; } 131 virtual void set_type(Type *newType) override { type = newType; } 132 132 133 133 Initializer *get_init() const { return init; } … … 139 139 static ObjectDecl * newObject( const std::string & name, Type * type, Initializer * init ); 140 140 141 virtual ObjectDecl *clone() const { return new ObjectDecl( *this ); }142 virtual void accept( Visitor &v ) { v.visit( this ); }143 virtual DeclarationWithType *acceptMutator( Mutator &m ) { return m.mutate( this ); }144 virtual void print( std::ostream &os, int indent = 0 ) const ;145 virtual void printShort( std::ostream &os, int indent = 0 ) const ;141 virtual ObjectDecl *clone() const override { return new ObjectDecl( *this ); } 142 virtual void accept( Visitor &v ) override { v.visit( this ); } 143 virtual DeclarationWithType *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 144 virtual void print( std::ostream &os, int indent = 0 ) const override; 145 virtual void printShort( std::ostream &os, int indent = 0 ) const override; 146 146 }; 147 147 … … 157 157 virtual ~FunctionDecl(); 158 158 159 Type * get_type() const{ return type; }160 virtual void set_type(Type * t) { type = strict_dynamic_cast< FunctionType* >( t ); }159 virtual Type * get_type() const override { return type; } 160 virtual void set_type(Type * t) override { type = strict_dynamic_cast< FunctionType* >( t ); } 161 161 162 162 FunctionType * get_functionType() const { return type; } … … 165 165 void set_statements( CompoundStmt *newValue ) { statements = newValue; } 166 166 167 virtual FunctionDecl *clone() const { return new FunctionDecl( *this ); }168 virtual void accept( Visitor &v ) { v.visit( this ); }169 virtual DeclarationWithType *acceptMutator( Mutator &m ) { return m.mutate( this ); }170 virtual void print( std::ostream &os, int indent = 0 ) const ;171 virtual void printShort( std::ostream &os, int indent = 0 ) const ;167 virtual FunctionDecl *clone() const override { return new FunctionDecl( *this ); } 168 virtual void accept( Visitor &v ) override { v.visit( this ); } 169 virtual DeclarationWithType *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 170 virtual void print( std::ostream &os, int indent = 0 ) const override; 171 virtual void printShort( std::ostream &os, int indent = 0 ) const override; 172 172 }; 173 173 … … 190 190 virtual std::string typeString() const = 0; 191 191 192 virtual NamedTypeDecl *clone() const = 0;193 virtual void print( std::ostream &os, int indent = 0 ) const ;194 virtual void printShort( std::ostream &os, int indent = 0 ) const ;192 virtual NamedTypeDecl *clone() const override = 0; 193 virtual void print( std::ostream &os, int indent = 0 ) const override; 194 virtual void printShort( std::ostream &os, int indent = 0 ) const override; 195 195 }; 196 196 … … 227 227 TypeDecl * set_sized( bool newValue ) { sized = newValue; return this; } 228 228 229 virtual std::string typeString() const ;229 virtual std::string typeString() const override; 230 230 virtual std::string genTypeString() const; 231 231 232 virtual TypeDecl *clone() const { return new TypeDecl( *this ); }233 virtual void accept( Visitor &v ) { v.visit( this ); }234 virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }235 virtual void print( std::ostream &os, int indent = 0 ) const ;232 virtual TypeDecl *clone() const override { return new TypeDecl( *this ); } 233 virtual void accept( Visitor &v ) override { v.visit( this ); } 234 virtual Declaration *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 235 virtual void print( std::ostream &os, int indent = 0 ) const override; 236 236 237 237 private: … … 245 245 TypedefDecl( const TypedefDecl &other ) : Parent( other ) {} 246 246 247 virtual std::string typeString() const ;248 249 virtual TypedefDecl *clone() const { return new TypedefDecl( *this ); }250 virtual void accept( Visitor &v ) { v.visit( this ); }251 virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }247 virtual std::string typeString() const override; 248 249 virtual TypedefDecl *clone() const override { return new TypedefDecl( *this ); } 250 virtual void accept( Visitor &v ) override { v.visit( this ); } 251 virtual Declaration *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 252 252 private: 253 253 }; … … 274 274 AggregateDecl * set_body( bool body ) { AggregateDecl::body = body; return this; } 275 275 276 virtual void print( std::ostream &os, int indent = 0 ) const ;277 virtual void printShort( std::ostream &os, int indent = 0 ) const ;276 virtual void print( std::ostream &os, int indent = 0 ) const override; 277 virtual void printShort( std::ostream &os, int indent = 0 ) const override; 278 278 protected: 279 279 virtual std::string typeString() const = 0; … … 290 290 bool is_thread() { return kind == DeclarationNode::Thread; } 291 291 292 virtual StructDecl *clone() const { return new StructDecl( *this ); }293 virtual void accept( Visitor &v ) { v.visit( this ); }294 virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }292 virtual StructDecl *clone() const override { return new StructDecl( *this ); } 293 virtual void accept( Visitor &v ) override { v.visit( this ); } 294 virtual Declaration *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 295 295 private: 296 296 DeclarationNode::Aggregate kind; 297 virtual std::string typeString() const ;297 virtual std::string typeString() const override; 298 298 }; 299 299 … … 304 304 UnionDecl( const UnionDecl &other ) : Parent( other ) {} 305 305 306 virtual UnionDecl *clone() const { return new UnionDecl( *this ); }307 virtual void accept( Visitor &v ) { v.visit( this ); }308 virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }309 private: 310 virtual std::string typeString() const ;306 virtual UnionDecl *clone() const override { return new UnionDecl( *this ); } 307 virtual void accept( Visitor &v ) override { v.visit( this ); } 308 virtual Declaration *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 309 private: 310 virtual std::string typeString() const override; 311 311 }; 312 312 … … 317 317 EnumDecl( const EnumDecl &other ) : Parent( other ) {} 318 318 319 virtual EnumDecl *clone() const { return new EnumDecl( *this ); }320 virtual void accept( Visitor &v ) { v.visit( this ); }321 virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }322 private: 323 virtual std::string typeString() const ;319 virtual EnumDecl *clone() const override { return new EnumDecl( *this ); } 320 virtual void accept( Visitor &v ) override { v.visit( this ); } 321 virtual Declaration *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 322 private: 323 virtual std::string typeString() const override; 324 324 }; 325 325 … … 332 332 TraitDecl( const TraitDecl &other ) : Parent( other ) {} 333 333 334 virtual TraitDecl *clone() const { return new TraitDecl( *this ); }335 virtual void accept( Visitor &v ) { v.visit( this ); }336 virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }337 private: 338 virtual std::string typeString() const ;334 virtual TraitDecl *clone() const override { return new TraitDecl( *this ); } 335 virtual void accept( Visitor &v ) override { v.visit( this ); } 336 virtual Declaration *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 337 private: 338 virtual std::string typeString() const override; 339 339 }; 340 340 … … 350 350 void set_stmt( AsmStmt *newValue ) { stmt = newValue; } 351 351 352 virtual AsmDecl *clone() const { return new AsmDecl( *this ); } 353 virtual void accept( Visitor &v ) { v.visit( this ); } 354 virtual AsmDecl *acceptMutator( Mutator &m ) { return m.mutate( this ); } 355 virtual void print( std::ostream &os, int indent = 0 ) const; 356 virtual void printShort( std::ostream &os, int indent = 0 ) const; 357 }; 358 359 std::ostream & operator<<( std::ostream & out, const Declaration * decl ); 352 virtual AsmDecl *clone() const override { return new AsmDecl( *this ); } 353 virtual void accept( Visitor &v ) override { v.visit( this ); } 354 virtual AsmDecl *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 355 virtual void print( std::ostream &os, int indent = 0 ) const override; 356 virtual void printShort( std::ostream &os, int indent = 0 ) const override; 357 }; 358 360 359 std::ostream & operator<<( std::ostream & os, const TypeDecl::Data & data ); 361 360 -
src/SynTree/Expression.cc
r201aeb9 rd67cdb7 741 741 } 742 742 743 744 std::ostream & operator<<( std::ostream & out, const Expression * expr ) {745 if ( expr ) {746 expr->print( out );747 } else {748 out << "nullptr";749 }750 return out;751 }752 753 743 // Local Variables: // 754 744 // tab-width: 4 // -
src/SynTree/Expression.h
r201aeb9 rd67cdb7 821 821 }; 822 822 823 824 std::ostream & operator<<( std::ostream & out, const Expression * expr );825 826 823 // Local Variables: // 827 824 // tab-width: 4 // -
src/SynTree/Initializer.cc
r201aeb9 rd67cdb7 137 137 } 138 138 139 std::ostream & operator<<( std::ostream & out, const Initializer * init ) {140 if ( init ) {141 init->print( out );142 } else {143 out << "nullptr";144 }145 return out;146 }147 148 std::ostream & operator<<( std::ostream & out, const Designation * des ) {149 if ( des ) {150 des->print( out );151 } else {152 out << "nullptr";153 }154 return out;155 }156 157 139 // Local Variables: // 158 140 // tab-width: 4 // -
src/SynTree/Initializer.h
r201aeb9 rd67cdb7 38 38 39 39 virtual Designation * clone() const { return new Designation( *this ); }; 40 virtual void accept( Visitor &v ) { v.visit( this ); }40 virtual void accept( Visitor &v ) override { v.visit( this ); } 41 41 virtual Designation * acceptMutator( Mutator &m ) { return m.mutate( this ); } 42 virtual void print( std::ostream &os, int indent = 0 ) const ;42 virtual void print( std::ostream &os, int indent = 0 ) const override; 43 43 }; 44 44 … … 55 55 56 56 virtual Initializer *clone() const = 0; 57 virtual void accept( Visitor &v ) = 0;57 virtual void accept( Visitor &v ) override = 0; 58 58 virtual Initializer *acceptMutator( Mutator &m ) = 0; 59 virtual void print( std::ostream &os, int indent = 0 ) const = 0;59 virtual void print( std::ostream &os, int indent = 0 ) const override = 0; 60 60 private: 61 61 bool maybeConstructed; … … 75 75 void set_value( Expression *newValue ) { value = newValue; } 76 76 77 virtual SingleInit *clone() const { return new SingleInit( *this); }78 virtual void accept( Visitor &v ) { v.visit( this ); }79 virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); }80 virtual void print( std::ostream &os, int indent = 0 ) const ;77 virtual SingleInit *clone() const override { return new SingleInit( *this); } 78 virtual void accept( Visitor &v ) override { v.visit( this ); } 79 virtual Initializer *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 80 virtual void print( std::ostream &os, int indent = 0 ) const override; 81 81 }; 82 82 … … 103 103 const_iterator end() const { return initializers.end(); } 104 104 105 virtual ListInit *clone() const { return new ListInit( *this ); }106 virtual void accept( Visitor &v ) { v.visit( this ); }107 virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); }108 virtual void print( std::ostream &os, int indent = 0 ) const ;105 virtual ListInit *clone() const override { return new ListInit( *this ); } 106 virtual void accept( Visitor &v ) override { v.visit( this ); } 107 virtual Initializer *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 108 virtual void print( std::ostream &os, int indent = 0 ) const override; 109 109 }; 110 110 … … 129 129 Initializer * get_init() const { return init; } 130 130 131 ConstructorInit *clone() const { return new ConstructorInit( *this ); }132 virtual void accept( Visitor &v ) { v.visit( this ); }133 virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); }134 virtual void print( std::ostream &os, int indent = 0 ) const ;131 ConstructorInit *clone() const override { return new ConstructorInit( *this ); } 132 virtual void accept( Visitor &v ) override { v.visit( this ); } 133 virtual Initializer *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 134 virtual void print( std::ostream &os, int indent = 0 ) const override; 135 135 136 136 private: … … 140 140 }; 141 141 142 std::ostream & operator<<( std::ostream & out, const Initializer * init );143 std::ostream & operator<<( std::ostream & out, const Designation * des );144 145 142 // Local Variables: // 146 143 // tab-width: 4 // -
src/SynTree/Statement.cc
r201aeb9 rd67cdb7 168 168 } 169 169 170 SwitchStmt::SwitchStmt( std::list<Label> labels, Expression * condition, std::list<Statement *> &statements ):170 SwitchStmt::SwitchStmt( std::list<Label> labels, Expression * condition, const std::list<Statement *> &statements ): 171 171 Statement( labels ), condition( condition ), statements( statements ) { 172 172 } … … 196 196 } 197 197 198 CaseStmt::CaseStmt( std::list<Label> labels, Expression *condition, std::list<Statement *> &statements, bool deflt ) throw ( SemanticError ) :198 CaseStmt::CaseStmt( std::list<Label> labels, Expression *condition, const std::list<Statement *> &statements, bool deflt ) throw ( SemanticError ) : 199 199 Statement( labels ), condition( condition ), stmts( statements ), _isDefault( deflt ) { 200 200 if ( isDefault() && condition != 0 ) … … 497 497 } 498 498 499 std::ostream & operator<<( std::ostream & out, const Statement * statement ) {500 if ( statement ) {501 statement->print( out );502 } else {503 out << "nullptr";504 }505 return out;506 }507 508 499 // Local Variables: // 509 500 // tab-width: 4 // -
src/SynTree/Statement.h
r201aeb9 rd67cdb7 44 44 45 45 virtual Statement *clone() const = 0; 46 virtual void accept( Visitor &v ) = 0;46 virtual void accept( Visitor &v ) override = 0; 47 47 virtual Statement *acceptMutator( Mutator &m ) = 0; 48 virtual void print( std::ostream &os, int indent = 0 ) const ;48 virtual void print( std::ostream &os, int indent = 0 ) const override; 49 49 }; 50 50 … … 54 54 55 55 CompoundStmt( std::list<Label> labels ); 56 CompoundStmt( std::list<Statement *> stmts ); 56 57 CompoundStmt( const CompoundStmt &other ); 57 58 virtual ~CompoundStmt(); … … 61 62 void push_front( Statement * stmt ) { kids.push_front( stmt ); } 62 63 63 virtual CompoundStmt *clone() const { return new CompoundStmt( *this ); }64 virtual void accept( Visitor &v ) { v.visit( this ); }65 virtual CompoundStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); }66 virtual void print( std::ostream &os, int indent = 0 ) const ;64 virtual CompoundStmt *clone() const override { return new CompoundStmt( *this ); } 65 virtual void accept( Visitor &v ) override { v.visit( this ); } 66 virtual CompoundStmt *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 67 virtual void print( std::ostream &os, int indent = 0 ) const override; 67 68 }; 68 69 … … 72 73 NullStmt( std::list<Label> labels ); 73 74 74 virtual NullStmt *clone() const { return new NullStmt( *this ); }75 virtual void accept( Visitor &v ) { v.visit( this ); }76 virtual NullStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); }77 virtual void print( std::ostream &os, int indent = 0 ) const ;75 virtual NullStmt *clone() const override { return new NullStmt( *this ); } 76 virtual void accept( Visitor &v ) override { v.visit( this ); } 77 virtual NullStmt *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 78 virtual void print( std::ostream &os, int indent = 0 ) const override; 78 79 }; 79 80 … … 89 90 void set_expr( Expression *newValue ) { expr = newValue; } 90 91 91 virtual ExprStmt *clone() const { return new ExprStmt( *this ); }92 virtual void accept( Visitor &v ) { v.visit( this ); }93 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }94 virtual void print( std::ostream &os, int indent = 0 ) const ;92 virtual ExprStmt *clone() const override { return new ExprStmt( *this ); } 93 virtual void accept( Visitor &v ) override { v.visit( this ); } 94 virtual Statement *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 95 virtual void print( std::ostream &os, int indent = 0 ) const override; 95 96 }; 96 97 … … 146 147 void set_elsePart( Statement *newValue ) { elsePart = newValue; } 147 148 148 virtual IfStmt *clone() const { return new IfStmt( *this ); }149 virtual void accept( Visitor &v ) { v.visit( this ); }150 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }151 virtual void print( std::ostream &os, int indent = 0 ) const ;149 virtual IfStmt *clone() const override { return new IfStmt( *this ); } 150 virtual void accept( Visitor &v ) override { v.visit( this ); } 151 virtual Statement *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 152 virtual void print( std::ostream &os, int indent = 0 ) const override; 152 153 }; 153 154 … … 157 158 std::list<Statement *> statements; 158 159 159 SwitchStmt( std::list<Label> labels, Expression *condition, std::list<Statement *> &statements );160 SwitchStmt( std::list<Label> labels, Expression *condition, const std::list<Statement *> &statements ); 160 161 SwitchStmt( const SwitchStmt &other ); 161 162 virtual ~SwitchStmt(); … … 166 167 std::list<Statement *> & get_statements() { return statements; } 167 168 168 virtual void accept( Visitor &v ) { v.visit( this ); }169 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }170 171 virtual SwitchStmt *clone() const { return new SwitchStmt( *this ); }172 virtual void print( std::ostream &os, int indent = 0 ) const ;169 virtual void accept( Visitor &v ) override { v.visit( this ); } 170 virtual Statement *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 171 172 virtual SwitchStmt *clone() const override { return new SwitchStmt( *this ); } 173 virtual void print( std::ostream &os, int indent = 0 ) const override; 173 174 174 175 }; … … 179 180 std::list<Statement *> stmts; 180 181 181 CaseStmt( std::list<Label> labels, Expression *conditions, std::list<Statement *> &stmts, bool isdef = false ) throw(SemanticError);182 CaseStmt( std::list<Label> labels, Expression *conditions, const std::list<Statement *> &stmts, bool isdef = false ) throw(SemanticError); 182 183 CaseStmt( const CaseStmt &other ); 183 184 virtual ~CaseStmt(); … … 194 195 void set_statements( std::list<Statement *> &newValue ) { stmts = newValue; } 195 196 196 virtual void accept( Visitor &v ) { v.visit( this ); }197 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }198 199 virtual CaseStmt *clone() const { return new CaseStmt( *this ); }200 virtual void print( std::ostream &os, int indent = 0 ) const ;197 virtual void accept( Visitor &v ) override { v.visit( this ); } 198 virtual Statement *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 199 200 virtual CaseStmt *clone() const override { return new CaseStmt( *this ); } 201 virtual void print( std::ostream &os, int indent = 0 ) const override; 201 202 private: 202 203 bool _isDefault; … … 221 222 void set_isDoWhile( bool newValue ) { isDoWhile = newValue; } 222 223 223 virtual WhileStmt *clone() const { return new WhileStmt( *this ); }224 virtual void accept( Visitor &v ) { v.visit( this ); }225 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }226 virtual void print( std::ostream &os, int indent = 0 ) const ;224 virtual WhileStmt *clone() const override { return new WhileStmt( *this ); } 225 virtual void accept( Visitor &v ) override { v.visit( this ); } 226 virtual Statement *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 227 virtual void print( std::ostream &os, int indent = 0 ) const override; 227 228 }; 228 229 … … 247 248 void set_body( Statement *newValue ) { body = newValue; } 248 249 249 virtual ForStmt *clone() const { return new ForStmt( *this ); }250 virtual void accept( Visitor &v ) { v.visit( this ); }251 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }252 virtual void print( std::ostream &os, int indent = 0 ) const ;250 virtual ForStmt *clone() const override { return new ForStmt( *this ); } 251 virtual void accept( Visitor &v ) override { v.visit( this ); } 252 virtual Statement *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 253 virtual void print( std::ostream &os, int indent = 0 ) const override; 253 254 }; 254 255 … … 276 277 const char *get_typename() { return brType[ type ]; } 277 278 278 virtual BranchStmt *clone() const { return new BranchStmt( *this ); }279 virtual void accept( Visitor &v ) { v.visit( this ); }280 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }281 virtual void print( std::ostream &os, int indent = 0 ) const ;279 virtual BranchStmt *clone() const override { return new BranchStmt( *this ); } 280 virtual void accept( Visitor &v ) override { v.visit( this ); } 281 virtual Statement *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 282 virtual void print( std::ostream &os, int indent = 0 ) const override; 282 283 private: 283 284 static const char *brType[]; … … 295 296 void set_expr( Expression *newValue ) { expr = newValue; } 296 297 297 virtual ReturnStmt *clone() const { return new ReturnStmt( *this ); }298 virtual void accept( Visitor &v ) { v.visit( this ); }299 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }300 virtual void print( std::ostream &os, int indent = 0 ) const ;298 virtual ReturnStmt *clone() const override { return new ReturnStmt( *this ); } 299 virtual void accept( Visitor &v ) override { v.visit( this ); } 300 virtual Statement *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 301 virtual void print( std::ostream &os, int indent = 0 ) const override; 301 302 }; 302 303 … … 319 320 void set_target( Expression * newTarget ) { target = newTarget; } 320 321 321 virtual ThrowStmt *clone() const { return new ThrowStmt( *this ); }322 virtual void accept( Visitor &v ) { v.visit( this ); }323 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }324 virtual void print( std::ostream &os, int indent = 0 ) const ;322 virtual ThrowStmt *clone() const override { return new ThrowStmt( *this ); } 323 virtual void accept( Visitor &v ) override { v.visit( this ); } 324 virtual Statement *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 325 virtual void print( std::ostream &os, int indent = 0 ) const override; 325 326 }; 326 327 … … 342 343 void set_finally( FinallyStmt *newValue ) { finallyBlock = newValue; } 343 344 344 virtual TryStmt *clone() const { return new TryStmt( *this ); }345 virtual void accept( Visitor &v ) { v.visit( this ); }346 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }347 virtual void print( std::ostream &os, int indent = 0 ) const ;345 virtual TryStmt *clone() const override { return new TryStmt( *this ); } 346 virtual void accept( Visitor &v ) override { v.visit( this ); } 347 virtual Statement *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 348 virtual void print( std::ostream &os, int indent = 0 ) const override; 348 349 }; 349 350 … … 370 371 void set_body( Statement *newValue ) { body = newValue; } 371 372 372 virtual CatchStmt *clone() const { return new CatchStmt( *this ); }373 virtual void accept( Visitor &v ) { v.visit( this ); }374 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }375 virtual void print( std::ostream &os, int indent = 0 ) const ;373 virtual CatchStmt *clone() const override { return new CatchStmt( *this ); } 374 virtual void accept( Visitor &v ) override { v.visit( this ); } 375 virtual Statement *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 376 virtual void print( std::ostream &os, int indent = 0 ) const override; 376 377 }; 377 378 … … 387 388 void set_block( CompoundStmt *newValue ) { block = newValue; } 388 389 389 virtual FinallyStmt *clone() const { return new FinallyStmt( *this ); }390 virtual void accept( Visitor &v ) { v.visit( this ); }391 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }392 virtual void print( std::ostream &os, int indent = 0 ) const ;390 virtual FinallyStmt *clone() const override { return new FinallyStmt( *this ); } 391 virtual void accept( Visitor &v ) override { v.visit( this ); } 392 virtual Statement *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 393 virtual void print( std::ostream &os, int indent = 0 ) const override; 393 394 }; 394 395 … … 424 425 } orelse; 425 426 426 virtual WaitForStmt *clone() const { return new WaitForStmt( *this ); }427 virtual void accept( Visitor &v ) { v.visit( this ); }428 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }429 virtual void print( std::ostream &os, int indent = 0 ) const ;427 virtual WaitForStmt *clone() const override { return new WaitForStmt( *this ); } 428 virtual void accept( Visitor &v ) override { v.visit( this ); } 429 virtual Statement *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 430 virtual void print( std::ostream &os, int indent = 0 ) const override; 430 431 431 432 }; … … 444 445 void set_decl( Declaration *newValue ) { decl = newValue; } 445 446 446 virtual DeclStmt *clone() const { return new DeclStmt( *this ); }447 virtual void accept( Visitor &v ) { v.visit( this ); }448 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }449 virtual void print( std::ostream &os, int indent = 0 ) const ;447 virtual DeclStmt *clone() const override { return new DeclStmt( *this ); } 448 virtual void accept( Visitor &v ) override { v.visit( this ); } 449 virtual Statement *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 450 virtual void print( std::ostream &os, int indent = 0 ) const override; 450 451 }; 451 452 … … 466 467 void set_callStmt( Statement * newValue ) { callStmt = newValue; } 467 468 468 virtual ImplicitCtorDtorStmt *clone() const { return new ImplicitCtorDtorStmt( *this ); } 469 virtual void accept( Visitor &v ) { v.visit( this ); } 470 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 471 virtual void print( std::ostream &os, int indent = 0 ) const; 472 }; 473 474 475 std::ostream & operator<<( std::ostream & out, const Statement * statement ); 469 virtual ImplicitCtorDtorStmt *clone() const override { return new ImplicitCtorDtorStmt( *this ); } 470 virtual void accept( Visitor &v ) override { v.visit( this ); } 471 virtual Statement *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 472 virtual void print( std::ostream &os, int indent = 0 ) const override; 473 }; 476 474 477 475 // Local Variables: // -
src/SynTree/Type.cc
r201aeb9 rd67cdb7 101 101 const Type::Qualifiers noQualifiers; 102 102 103 std::ostream & operator<<( std::ostream & out, const Type * type ) {104 if ( type ) {105 type->print( out );106 } else {107 out << "nullptr";108 } // if109 return out;110 }111 112 103 // Local Variables: // 113 104 // tab-width: 4 // -
src/SynTree/Type.h
r201aeb9 rd67cdb7 192 192 VoidType( const Type::Qualifiers & tq, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 193 193 194 virtual unsigned size() const { return 0; };195 virtual bool isComplete() const { return false; }196 197 virtual VoidType *clone() const { return new VoidType( *this ); }198 virtual void accept( Visitor & v ) { v.visit( this ); }199 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }200 virtual void print( std::ostream & os, int indent = 0 ) const ;194 virtual unsigned size() const override { return 0; }; 195 virtual bool isComplete() const override { return false; } 196 197 virtual VoidType *clone() const override { return new VoidType( *this ); } 198 virtual void accept( Visitor & v ) override { v.visit( this ); } 199 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 200 virtual void print( std::ostream & os, int indent = 0 ) const override; 201 201 }; 202 202 … … 237 237 void set_kind( Kind newValue ) { kind = newValue; } 238 238 239 virtual BasicType *clone() const { return new BasicType( *this ); }240 virtual void accept( Visitor & v ) { v.visit( this ); }241 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }242 virtual void print( std::ostream & os, int indent = 0 ) const ;239 virtual BasicType *clone() const override { return new BasicType( *this ); } 240 virtual void accept( Visitor & v ) override { v.visit( this ); } 241 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 242 virtual void print( std::ostream & os, int indent = 0 ) const override; 243 243 244 244 bool isInteger() const; … … 270 270 bool is_array() const { return isStatic || isVarLen || dimension; } 271 271 272 virtual bool isComplete() const { return ! isVarLen; }273 274 virtual PointerType *clone() const { return new PointerType( *this ); }275 virtual void accept( Visitor & v ) { v.visit( this ); }276 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }277 virtual void print( std::ostream & os, int indent = 0 ) const ;272 virtual bool isComplete() const override { return ! isVarLen; } 273 274 virtual PointerType *clone() const override { return new PointerType( *this ); } 275 virtual void accept( Visitor & v ) override { v.visit( this ); } 276 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 277 virtual void print( std::ostream & os, int indent = 0 ) const override; 278 278 }; 279 279 … … 298 298 void set_isStatic( bool newValue ) { isStatic = newValue; } 299 299 300 virtual bool isComplete() const { return ! isVarLen; }301 302 virtual ArrayType *clone() const { return new ArrayType( *this ); }303 virtual void accept( Visitor & v ) { v.visit( this ); }304 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }305 virtual void print( std::ostream & os, int indent = 0 ) const ;300 virtual bool isComplete() const override { return ! isVarLen; } 301 302 virtual ArrayType *clone() const override { return new ArrayType( *this ); } 303 virtual void accept( Visitor & v ) override { v.visit( this ); } 304 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 305 virtual void print( std::ostream & os, int indent = 0 ) const override; 306 306 }; 307 307 … … 317 317 void set_base( Type *newValue ) { base = newValue; } 318 318 319 virtual int referenceDepth() const ;319 virtual int referenceDepth() const override; 320 320 321 321 // Since reference types act like value types, their size is the size of the base. 322 322 // This makes it simple to cast the empty tuple to a reference type, since casts that increase 323 323 // the number of values are disallowed. 324 virtual unsigned size() const { return base->size(); }325 326 virtual ReferenceType *clone() const { return new ReferenceType( *this ); }327 virtual void accept( Visitor & v ) { v.visit( this ); }328 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }329 virtual void print( std::ostream & os, int indent = 0 ) const ;324 virtual unsigned size() const override { return base->size(); } 325 326 virtual ReferenceType *clone() const override { return new ReferenceType( *this ); } 327 virtual void accept( Visitor & v ) override { v.visit( this ); } 328 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 329 virtual void print( std::ostream & os, int indent = 0 ) const override; 330 330 }; 331 331 … … 351 351 bool isTtype() const; 352 352 353 virtual FunctionType *clone() const { return new FunctionType( *this ); }354 virtual void accept( Visitor & v ) { v.visit( this ); }355 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }356 virtual void print( std::ostream & os, int indent = 0 ) const ;353 virtual FunctionType *clone() const override { return new FunctionType( *this ); } 354 virtual void accept( Visitor & v ) override { v.visit( this ); } 355 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 356 virtual void print( std::ostream & os, int indent = 0 ) const override; 357 357 }; 358 358 … … 373 373 void set_hoistType( bool newValue ) { hoistType = newValue; } 374 374 375 virtual ReferenceToType *clone() const = 0;376 virtual void accept( Visitor & v ) = 0;377 virtual Type *acceptMutator( Mutator & m ) = 0;378 virtual void print( std::ostream & os, int indent = 0 ) const ;375 virtual ReferenceToType *clone() const override = 0; 376 virtual void accept( Visitor & v ) override = 0; 377 virtual Type *acceptMutator( Mutator & m ) override = 0; 378 virtual void print( std::ostream & os, int indent = 0 ) const override; 379 379 380 380 virtual void lookup( __attribute__((unused)) const std::string & name, __attribute__((unused)) std::list< Declaration* > & foundDecls ) const {} … … 400 400 std::list<TypeDecl*> * get_baseParameters(); 401 401 402 virtual bool isComplete() const ;402 virtual bool isComplete() const override; 403 403 404 404 /// Looks up the members of this struct named "name" and places them into "foundDecls". 405 405 /// Clones declarations into "foundDecls", caller responsible for freeing 406 void lookup( const std::string & name, std::list< Declaration* > & foundDecls ) const ;407 408 virtual StructInstType *clone() const { return new StructInstType( *this ); }409 virtual void accept( Visitor & v ) { v.visit( this ); }410 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }411 412 virtual void print( std::ostream & os, int indent = 0 ) const ;406 void lookup( const std::string & name, std::list< Declaration* > & foundDecls ) const override; 407 408 virtual StructInstType *clone() const override { return new StructInstType( *this ); } 409 virtual void accept( Visitor & v ) override { v.visit( this ); } 410 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 411 412 virtual void print( std::ostream & os, int indent = 0 ) const override; 413 413 private: 414 virtual std::string typeString() const ;414 virtual std::string typeString() const override; 415 415 }; 416 416 … … 432 432 std::list< TypeDecl * > * get_baseParameters(); 433 433 434 virtual bool isComplete() const ;434 virtual bool isComplete() const override; 435 435 436 436 /// looks up the members of this union named "name" and places them into "foundDecls" 437 437 /// Clones declarations into "foundDecls", caller responsible for freeing 438 void lookup( const std::string & name, std::list< Declaration* > & foundDecls ) const ;439 440 virtual UnionInstType *clone() const { return new UnionInstType( *this ); }441 virtual void accept( Visitor & v ) { v.visit( this ); }442 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }443 444 virtual void print( std::ostream & os, int indent = 0 ) const ;438 void lookup( const std::string & name, std::list< Declaration* > & foundDecls ) const override; 439 440 virtual UnionInstType *clone() const override { return new UnionInstType( *this ); } 441 virtual void accept( Visitor & v ) override { v.visit( this ); } 442 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 443 444 virtual void print( std::ostream & os, int indent = 0 ) const override; 445 445 private: 446 virtual std::string typeString() const ;446 virtual std::string typeString() const override; 447 447 }; 448 448 … … 461 461 void set_baseEnum( EnumDecl *newValue ) { baseEnum = newValue; } 462 462 463 virtual bool isComplete() const ;464 465 virtual EnumInstType *clone() const { return new EnumInstType( *this ); }466 virtual void accept( Visitor & v ) { v.visit( this ); }467 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }463 virtual bool isComplete() const override; 464 465 virtual EnumInstType *clone() const override { return new EnumInstType( *this ); } 466 virtual void accept( Visitor & v ) override { v.visit( this ); } 467 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 468 468 private: 469 virtual std::string typeString() const ;469 virtual std::string typeString() const override; 470 470 }; 471 471 … … 482 482 ~TraitInstType(); 483 483 484 virtual bool isComplete() const ;485 486 virtual TraitInstType *clone() const { return new TraitInstType( *this ); }487 virtual void accept( Visitor & v ) { v.visit( this ); }488 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }484 virtual bool isComplete() const override; 485 486 virtual TraitInstType *clone() const override { return new TraitInstType( *this ); } 487 virtual void accept( Visitor & v ) override { v.visit( this ); } 488 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 489 489 private: 490 virtual std::string typeString() const ;490 virtual std::string typeString() const override; 491 491 }; 492 492 … … 509 509 void set_isFtype( bool newValue ) { isFtype = newValue; } 510 510 511 virtual bool isComplete() const ;512 513 virtual TypeInstType *clone() const { return new TypeInstType( *this ); }514 virtual void accept( Visitor & v ) { v.visit( this ); }515 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }516 virtual void print( std::ostream & os, int indent = 0 ) const ;511 virtual bool isComplete() const override; 512 513 virtual TypeInstType *clone() const override { return new TypeInstType( *this ); } 514 virtual void accept( Visitor & v ) override { v.visit( this ); } 515 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 516 virtual void print( std::ostream & os, int indent = 0 ) const override; 517 517 private: 518 virtual std::string typeString() const ;518 virtual std::string typeString() const override; 519 519 }; 520 520 … … 532 532 533 533 std::list<Type *> & get_types() { return types; } 534 virtual unsigned size() const { return types.size(); };534 virtual unsigned size() const override { return types.size(); }; 535 535 536 536 // For now, this is entirely synthetic -- tuple types always have unnamed members. … … 541 541 iterator end() { return types.end(); } 542 542 543 virtual Type * getComponent( unsigned i ) {543 virtual Type * getComponent( unsigned i ) override { 544 544 assertf( i < size(), "TupleType::getComponent: index %d must be less than size %d", i, size() ); 545 545 return *(begin()+i); 546 546 } 547 547 548 // virtual bool isComplete() const { return true; } // xxx - not sure if this is right, might need to recursively check complete-ness549 550 virtual TupleType *clone() const { return new TupleType( *this ); }551 virtual void accept( Visitor & v ) { v.visit( this ); }552 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }553 virtual void print( std::ostream & os, int indent = 0 ) const ;548 // virtual bool isComplete() const override { return true; } // xxx - not sure if this is right, might need to recursively check complete-ness 549 550 virtual TupleType *clone() const override { return new TupleType( *this ); } 551 virtual void accept( Visitor & v ) override { v.visit( this ); } 552 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 553 virtual void print( std::ostream & os, int indent = 0 ) const override; 554 554 }; 555 555 … … 565 565 void set_expr( Expression *newValue ) { expr = newValue; } 566 566 567 virtual bool isComplete() const { assert( false ); return false; }568 569 virtual TypeofType *clone() const { return new TypeofType( *this ); }570 virtual void accept( Visitor & v ) { v.visit( this ); }571 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }572 virtual void print( std::ostream & os, int indent = 0 ) const ;567 virtual bool isComplete() const override { assert( false ); return false; } 568 569 virtual TypeofType *clone() const override { return new TypeofType( *this ); } 570 virtual void accept( Visitor & v ) override { v.visit( this ); } 571 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 572 virtual void print( std::ostream & os, int indent = 0 ) const override; 573 573 }; 574 574 … … 594 594 void set_isType( bool newValue ) { isType = newValue; } 595 595 596 virtual bool isComplete() const { assert( false ); } // xxx - not sure what to do here597 598 virtual AttrType *clone() const { return new AttrType( *this ); }599 virtual void accept( Visitor & v ) { v.visit( this ); }600 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }601 virtual void print( std::ostream & os, int indent = 0 ) const ;596 virtual bool isComplete() const override { assert( false ); } // xxx - not sure what to do here 597 598 virtual AttrType *clone() const override { return new AttrType( *this ); } 599 virtual void accept( Visitor & v ) override { v.visit( this ); } 600 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 601 virtual void print( std::ostream & os, int indent = 0 ) const override; 602 602 }; 603 603 … … 608 608 VarArgsType( Type::Qualifiers tq, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 609 609 610 virtual bool isComplete() const { return true; } // xxx - is this right?611 612 virtual VarArgsType *clone() const { return new VarArgsType( *this ); }613 virtual void accept( Visitor & v ) { v.visit( this ); }614 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }615 virtual void print( std::ostream & os, int indent = 0 ) const ;610 virtual bool isComplete() const override{ return true; } // xxx - is this right? 611 612 virtual VarArgsType *clone() const override { return new VarArgsType( *this ); } 613 virtual void accept( Visitor & v ) override { v.visit( this ); } 614 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 615 virtual void print( std::ostream & os, int indent = 0 ) const override; 616 616 }; 617 617 … … 622 622 ZeroType( Type::Qualifiers tq, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 623 623 624 virtual ZeroType *clone() const { return new ZeroType( *this ); }625 virtual void accept( Visitor & v ) { v.visit( this ); }626 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); }627 virtual void print( std::ostream & os, int indent = 0 ) const ;624 virtual ZeroType *clone() const override { return new ZeroType( *this ); } 625 virtual void accept( Visitor & v ) override { v.visit( this ); } 626 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 627 virtual void print( std::ostream & os, int indent = 0 ) const override; 628 628 }; 629 629 … … 634 634 OneType( Type::Qualifiers tq, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 635 635 636 virtual OneType *clone() const { return new OneType( *this ); } 637 virtual void accept( Visitor & v ) { v.visit( this ); } 638 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); } 639 virtual void print( std::ostream & os, int indent = 0 ) const; 640 }; 641 642 std::ostream & operator<<( std::ostream & out, const Type * type ); 636 virtual OneType *clone() const override { return new OneType( *this ); } 637 virtual void accept( Visitor & v ) override { v.visit( this ); } 638 virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); } 639 virtual void print( std::ostream & os, int indent = 0 ) const override; 640 }; 643 641 644 642 // Local Variables: // -
src/SynTree/Visitor.h
r201aeb9 rd67cdb7 25 25 public: 26 26 // visit: Default implementation of all functions visits the children 27 27 // of the given syntax node, but performs no other action. 28 28 29 29 virtual void visit( ObjectDecl *objectDecl ); -
src/SynTree/module.mk
r201aeb9 rd67cdb7 48 48 SynTree/Visitor.cc \ 49 49 SynTree/Mutator.cc \ 50 SynTree/AddStmtVisitor.cc \51 50 SynTree/TypeSubstitution.cc \ 52 51 SynTree/Attribute.cc \
Note:
See TracChangeset
for help on using the changeset viewer.