Changes in src/InitTweak/GenInit.cc [b8524ca:234b1cb]
- File:
-
- 1 edited
-
src/InitTweak/GenInit.cc (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/InitTweak/GenInit.cc
rb8524ca r234b1cb 18 18 #include <algorithm> // for any_of 19 19 #include <cassert> // for assert, strict_dynamic_cast, assertf 20 #include <deque>21 20 #include <iterator> // for back_inserter, inserter, back_inse... 22 21 #include <list> // for _List_iterator, list 23 22 24 #include "AST/Decl.hpp"25 #include "AST/Init.hpp"26 #include "AST/Node.hpp"27 #include "AST/Stmt.hpp"28 23 #include "CodeGen/OperatorTable.h" 29 24 #include "Common/PassVisitor.h" // for PassVisitor, WithGuards, WithShort... … … 279 274 assertf( objDecl, "genCtorDtor passed null objDecl" ); 280 275 std::list< Statement * > stmts; 281 InitExpander _oldsrcParam( maybeClone( arg ) );276 InitExpander srcParam( maybeClone( arg ) ); 282 277 SymTab::genImplicitCall( srcParam, new VariableExpr( objDecl ), fname, back_inserter( stmts ), objDecl ); 283 278 assert( stmts.size() <= 1 ); … … 291 286 std::list< Statement * > dtor; 292 287 293 InitExpander _oldsrcParam( objDecl->get_init() );294 InitExpander _oldnullParam( (Initializer *)NULL );288 InitExpander srcParam( objDecl->get_init() ); 289 InitExpander nullParam( (Initializer *)NULL ); 295 290 SymTab::genImplicitCall( srcParam, new VariableExpr( objDecl ), "?{}", back_inserter( ctor ), objDecl ); 296 291 SymTab::genImplicitCall( nullParam, new VariableExpr( objDecl ), "^?{}", front_inserter( dtor ), objDecl, false ); … … 359 354 } 360 355 361 ast::ConstructorInit * genCtorInit( const CodeLocation & loc, const ast::ObjectDecl * objDecl ) { 362 // call into genImplicitCall from Autogen.h to generate calls to ctor/dtor for each 363 // constructable object 364 InitExpander_new srcParam{ objDecl->init }, nullParam{ (const ast::Init *)nullptr }; 365 366 ast::ptr< ast::Stmt > ctor = SymTab::genImplicitCall( 367 srcParam, new ast::VariableExpr{ loc, objDecl }, loc, "?{}", objDecl ); 368 ast::ptr< ast::Stmt > dtor = SymTab::genImplicitCall( 369 nullParam, new ast::VariableExpr{ loc, objDecl }, loc, "^?{}", objDecl, 370 SymTab::LoopBackward ); 371 372 // check that either both ctor and dtor are present, or neither 373 assert( (bool)ctor == (bool)dtor ); 374 375 if ( ctor ) { 376 // need to remember init expression, in case no ctors exist. If ctor does exist, want to 377 // use ctor expression instead of init. 378 ctor.strict_as< ast::ImplicitCtorDtorStmt >(); 379 dtor.strict_as< ast::ImplicitCtorDtorStmt >(); 380 381 return new ast::ConstructorInit{ loc, ctor, dtor, objDecl->init }; 382 } 383 356 ast::ConstructorInit * genCtorInit( const ast::ObjectDecl * objDecl ) { 357 #warning unimplemented 358 (void)objDecl; 359 assert( false ); 384 360 return nullptr; 385 361 }
Note:
See TracChangeset
for help on using the changeset viewer.