Changeset 7ff3e522 for src/AST/Pass.impl.hpp
- Timestamp:
- Aug 12, 2020, 10:31:58 AM (4 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- f8d05ee
- Parents:
- 343d10e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Pass.impl.hpp
r343d10e r7ff3e522 25 25 using namespace ast; \ 26 26 /* back-up the visit children */ \ 27 __attribute__((unused)) ast::__pass::visit_children_guard guard1( ast::__pass::visit_children( pass, 0) ); \27 __attribute__((unused)) ast::__pass::visit_children_guard guard1( ast::__pass::visit_children(core, 0) ); \ 28 28 /* setup the scope for passes that want to run code at exit */ \ 29 __attribute__((unused)) ast::__pass::guard_value guard2( ast::__pass::at_cleanup ( pass, 0) ); \29 __attribute__((unused)) ast::__pass::guard_value guard2( ast::__pass::at_cleanup (core, 0) ); \ 30 30 /* begin tracing memory allocation if requested by this pass */ \ 31 __pass::beginTrace( pass, 0 ); \31 __pass::beginTrace( core, 0 ); \ 32 32 /* call the implementation of the previsit of this pass */ \ 33 __pass::previsit( pass, node, 0 );33 __pass::previsit( core, node, 0 ); 34 34 35 35 #define VISIT( code... ) \ … … 42 42 #define VISIT_END( type, node ) \ 43 43 /* call the implementation of the postvisit of this pass */ \ 44 auto __return = __pass::postvisit( pass, node, 0 ); \44 auto __return = __pass::postvisit( core, node, 0 ); \ 45 45 assertf(__return, "post visit should never return null"); \ 46 46 /* end tracing memory allocation if requested by this pass */ \ 47 __pass::endTrace( pass, 0 ); \47 __pass::endTrace( core, 0 ); \ 48 48 return __return; 49 49 … … 123 123 } 124 124 125 template< typename pass_t >125 template< typename core_t > 126 126 template< typename node_t > 127 auto ast::Pass< pass_t >::call_accept( const node_t * node )127 auto ast::Pass< core_t >::call_accept( const node_t * node ) 128 128 -> typename std::enable_if< 129 129 !std::is_base_of<ast::Expr, node_t>::value && … … 141 141 } 142 142 143 template< typename pass_t >144 const ast::Expr * ast::Pass< pass_t >::call_accept( const ast::Expr * expr ) {143 template< typename core_t > 144 const ast::Expr * ast::Pass< core_t >::call_accept( const ast::Expr * expr ) { 145 145 __pedantic_pass_assert( __visit_children() ); 146 146 __pedantic_pass_assert( expr ); 147 147 148 const ast::TypeSubstitution ** env_ptr = __pass::env( pass, 0);148 const ast::TypeSubstitution ** env_ptr = __pass::env( core, 0); 149 149 if ( env_ptr && expr->env ) { 150 150 *env_ptr = expr->env; … … 154 154 } 155 155 156 template< typename pass_t >157 const ast::Stmt * ast::Pass< pass_t >::call_accept( const ast::Stmt * stmt ) {156 template< typename core_t > 157 const ast::Stmt * ast::Pass< core_t >::call_accept( const ast::Stmt * stmt ) { 158 158 __pedantic_pass_assert( __visit_children() ); 159 159 __pedantic_pass_assert( stmt ); … … 163 163 164 164 // get the stmts/decls that will need to be spliced in 165 auto stmts_before = __pass::stmtsToAddBefore( pass, 0);166 auto stmts_after = __pass::stmtsToAddAfter ( pass, 0);167 auto decls_before = __pass::declsToAddBefore( pass, 0);168 auto decls_after = __pass::declsToAddAfter ( pass, 0);165 auto stmts_before = __pass::stmtsToAddBefore( core, 0); 166 auto stmts_after = __pass::stmtsToAddAfter ( core, 0); 167 auto decls_before = __pass::declsToAddBefore( core, 0); 168 auto decls_after = __pass::declsToAddAfter ( core, 0); 169 169 170 170 // These may be modified by subnode but most be restored once we exit this statemnet. 171 ValueGuardPtr< const ast::TypeSubstitution * > __old_env ( __pass::env( pass, 0) );171 ValueGuardPtr< const ast::TypeSubstitution * > __old_env ( __pass::env( core, 0) ); 172 172 ValueGuardPtr< typename std::remove_pointer< decltype(stmts_before) >::type > __old_decls_before( stmts_before ); 173 173 ValueGuardPtr< typename std::remove_pointer< decltype(stmts_after ) >::type > __old_decls_after ( stmts_after ); … … 205 205 } 206 206 207 template< typename pass_t >207 template< typename core_t > 208 208 template< template <class...> class container_t > 209 container_t< ptr<Stmt> > ast::Pass< pass_t >::call_accept( const container_t< ptr<Stmt> > & statements ) {209 container_t< ptr<Stmt> > ast::Pass< core_t >::call_accept( const container_t< ptr<Stmt> > & statements ) { 210 210 __pedantic_pass_assert( __visit_children() ); 211 211 if( statements.empty() ) return {}; … … 218 218 219 219 // get the stmts/decls that will need to be spliced in 220 auto stmts_before = __pass::stmtsToAddBefore( pass, 0);221 auto stmts_after = __pass::stmtsToAddAfter ( pass, 0);222 auto decls_before = __pass::declsToAddBefore( pass, 0);223 auto decls_after = __pass::declsToAddAfter ( pass, 0);220 auto stmts_before = __pass::stmtsToAddBefore( core, 0); 221 auto stmts_after = __pass::stmtsToAddAfter ( core, 0); 222 auto decls_before = __pass::declsToAddBefore( core, 0); 223 auto decls_after = __pass::declsToAddAfter ( core, 0); 224 224 225 225 // These may be modified by subnode but most be restored once we exit this statemnet. … … 271 271 } 272 272 273 template< typename pass_t >273 template< typename core_t > 274 274 template< template <class...> class container_t, typename node_t > 275 container_t< ast::ptr<node_t> > ast::Pass< pass_t >::call_accept( const container_t< ast::ptr<node_t> > & container ) {275 container_t< ast::ptr<node_t> > ast::Pass< core_t >::call_accept( const container_t< ast::ptr<node_t> > & container ) { 276 276 __pedantic_pass_assert( __visit_children() ); 277 277 if( container.empty() ) return {}; … … 302 302 } 303 303 304 template< typename pass_t >304 template< typename core_t > 305 305 template<typename node_t, typename parent_t, typename child_t> 306 void ast::Pass< pass_t >::maybe_accept(306 void ast::Pass< core_t >::maybe_accept( 307 307 const node_t * & parent, 308 308 child_t parent_t::*child … … 327 327 328 328 329 template< typename pass_t >329 template< typename core_t > 330 330 template< typename node_t > 331 void ast::Pass< pass_t >::mutate_forall( const node_t *& node ) {332 if ( auto subs = __pass::forall::subs( pass, 0 ) ) {331 void ast::Pass< core_t >::mutate_forall( const node_t *& node ) { 332 if ( auto subs = __pass::forall::subs( core, 0 ) ) { 333 333 // tracking TypeDecl substitution, full clone 334 334 if ( node->forall.empty() ) return; … … 352 352 //------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 353 353 354 template< typename pass_t >355 inline void ast::accept_all( std::list< ast::ptr<ast::Decl> > & decls, ast::Pass< pass_t > & visitor ) {354 template< typename core_t > 355 inline void ast::accept_all( std::list< ast::ptr<ast::Decl> > & decls, ast::Pass< core_t > & visitor ) { 356 356 // We are going to aggregate errors for all these statements 357 357 SemanticErrorException errors; … … 361 361 362 362 // get the stmts/decls that will need to be spliced in 363 auto decls_before = __pass::declsToAddBefore( visitor. pass, 0);364 auto decls_after = __pass::declsToAddAfter ( visitor. pass, 0);363 auto decls_before = __pass::declsToAddBefore( visitor.core, 0); 364 auto decls_after = __pass::declsToAddAfter ( visitor.core, 0); 365 365 366 366 // update pass statitistics … … 411 411 //-------------------------------------------------------------------------- 412 412 // ObjectDecl 413 template< typename pass_t >414 const ast::DeclWithType * ast::Pass< pass_t >::visit( const ast::ObjectDecl * node ) {413 template< typename core_t > 414 const ast::DeclWithType * ast::Pass< core_t >::visit( const ast::ObjectDecl * node ) { 415 415 VISIT_START( node ); 416 416 … … 425 425 ) 426 426 427 __pass::symtab::addId( pass, 0, node );427 __pass::symtab::addId( core, 0, node ); 428 428 429 429 VISIT_END( DeclWithType, node ); … … 432 432 //-------------------------------------------------------------------------- 433 433 // FunctionDecl 434 template< typename pass_t >435 const ast::DeclWithType * ast::Pass< pass_t >::visit( const ast::FunctionDecl * node ) {436 VISIT_START( node ); 437 438 __pass::symtab::addId( pass, 0, node );434 template< typename core_t > 435 const ast::DeclWithType * ast::Pass< core_t >::visit( const ast::FunctionDecl * node ) { 436 VISIT_START( node ); 437 438 __pass::symtab::addId( core, 0, node ); 439 439 440 440 VISIT(maybe_accept( node, &FunctionDecl::withExprs );) … … 444 444 // shadow with exprs and not the other way around. 445 445 guard_symtab guard { *this }; 446 __pass::symtab::addWith( pass, 0, node->withExprs, node );446 __pass::symtab::addWith( core, 0, node->withExprs, node ); 447 447 { 448 448 guard_symtab guard { *this }; … … 455 455 } 456 456 } }; 457 __pass::symtab::addId( pass, 0, func );457 __pass::symtab::addId( core, 0, func ); 458 458 VISIT( 459 459 maybe_accept( node, &FunctionDecl::type ); … … 473 473 //-------------------------------------------------------------------------- 474 474 // StructDecl 475 template< typename pass_t >476 const ast::Decl * ast::Pass< pass_t >::visit( const ast::StructDecl * node ) {475 template< typename core_t > 476 const ast::Decl * ast::Pass< core_t >::visit( const ast::StructDecl * node ) { 477 477 VISIT_START( node ); 478 478 479 479 // make up a forward declaration and add it before processing the members 480 480 // needs to be on the heap because addStruct saves the pointer 481 __pass::symtab::addStructFwd( pass, 0, node );481 __pass::symtab::addStructFwd( core, 0, node ); 482 482 483 483 VISIT({ … … 488 488 489 489 // this addition replaces the forward declaration 490 __pass::symtab::addStruct( pass, 0, node );490 __pass::symtab::addStruct( core, 0, node ); 491 491 492 492 VISIT_END( Decl, node ); … … 495 495 //-------------------------------------------------------------------------- 496 496 // UnionDecl 497 template< typename pass_t >498 const ast::Decl * ast::Pass< pass_t >::visit( const ast::UnionDecl * node ) {497 template< typename core_t > 498 const ast::Decl * ast::Pass< core_t >::visit( const ast::UnionDecl * node ) { 499 499 VISIT_START( node ); 500 500 501 501 // make up a forward declaration and add it before processing the members 502 __pass::symtab::addUnionFwd( pass, 0, node );502 __pass::symtab::addUnionFwd( core, 0, node ); 503 503 504 504 VISIT({ … … 508 508 }) 509 509 510 __pass::symtab::addUnion( pass, 0, node );510 __pass::symtab::addUnion( core, 0, node ); 511 511 512 512 VISIT_END( Decl, node ); … … 515 515 //-------------------------------------------------------------------------- 516 516 // EnumDecl 517 template< typename pass_t >518 const ast::Decl * ast::Pass< pass_t >::visit( const ast::EnumDecl * node ) {519 VISIT_START( node ); 520 521 __pass::symtab::addEnum( pass, 0, node );517 template< typename core_t > 518 const ast::Decl * ast::Pass< core_t >::visit( const ast::EnumDecl * node ) { 519 VISIT_START( node ); 520 521 __pass::symtab::addEnum( core, 0, node ); 522 522 523 523 VISIT( … … 532 532 //-------------------------------------------------------------------------- 533 533 // TraitDecl 534 template< typename pass_t >535 const ast::Decl * ast::Pass< pass_t >::visit( const ast::TraitDecl * node ) {534 template< typename core_t > 535 const ast::Decl * ast::Pass< core_t >::visit( const ast::TraitDecl * node ) { 536 536 VISIT_START( node ); 537 537 … … 542 542 }) 543 543 544 __pass::symtab::addTrait( pass, 0, node );544 __pass::symtab::addTrait( core, 0, node ); 545 545 546 546 VISIT_END( Decl, node ); … … 549 549 //-------------------------------------------------------------------------- 550 550 // TypeDecl 551 template< typename pass_t >552 const ast::Decl * ast::Pass< pass_t >::visit( const ast::TypeDecl * node ) {551 template< typename core_t > 552 const ast::Decl * ast::Pass< core_t >::visit( const ast::TypeDecl * node ) { 553 553 VISIT_START( node ); 554 554 … … 562 562 // note that assertions come after the type is added to the symtab, since they are not part of the type proper 563 563 // and may depend on the type itself 564 __pass::symtab::addType( pass, 0, node );564 __pass::symtab::addType( core, 0, node ); 565 565 566 566 VISIT( … … 578 578 //-------------------------------------------------------------------------- 579 579 // TypedefDecl 580 template< typename pass_t >581 const ast::Decl * ast::Pass< pass_t >::visit( const ast::TypedefDecl * node ) {580 template< typename core_t > 581 const ast::Decl * ast::Pass< core_t >::visit( const ast::TypedefDecl * node ) { 582 582 VISIT_START( node ); 583 583 … … 588 588 }) 589 589 590 __pass::symtab::addType( pass, 0, node );590 __pass::symtab::addType( core, 0, node ); 591 591 592 592 VISIT( maybe_accept( node, &TypedefDecl::assertions ); ) … … 597 597 //-------------------------------------------------------------------------- 598 598 // AsmDecl 599 template< typename pass_t >600 const ast::AsmDecl * ast::Pass< pass_t >::visit( const ast::AsmDecl * node ) {599 template< typename core_t > 600 const ast::AsmDecl * ast::Pass< core_t >::visit( const ast::AsmDecl * node ) { 601 601 VISIT_START( node ); 602 602 … … 610 610 //-------------------------------------------------------------------------- 611 611 // StaticAssertDecl 612 template< typename pass_t >613 const ast::StaticAssertDecl * ast::Pass< pass_t >::visit( const ast::StaticAssertDecl * node ) {612 template< typename core_t > 613 const ast::StaticAssertDecl * ast::Pass< core_t >::visit( const ast::StaticAssertDecl * node ) { 614 614 VISIT_START( node ); 615 615 … … 624 624 //-------------------------------------------------------------------------- 625 625 // CompoundStmt 626 template< typename pass_t >627 const ast::CompoundStmt * ast::Pass< pass_t >::visit( const ast::CompoundStmt * node ) {626 template< typename core_t > 627 const ast::CompoundStmt * ast::Pass< core_t >::visit( const ast::CompoundStmt * node ) { 628 628 VISIT_START( node ); 629 629 VISIT({ 630 630 // do not enter a new scope if inFunction is true - needs to check old state before the assignment 631 631 auto guard1 = makeFuncGuard( [this, inFunctionCpy = this->inFunction]() { 632 if ( ! inFunctionCpy ) __pass::symtab::enter( pass, 0);632 if ( ! inFunctionCpy ) __pass::symtab::enter(core, 0); 633 633 }, [this, inFunctionCpy = this->inFunction]() { 634 if ( ! inFunctionCpy ) __pass::symtab::leave( pass, 0);634 if ( ! inFunctionCpy ) __pass::symtab::leave(core, 0); 635 635 }); 636 636 ValueGuard< bool > guard2( inFunction ); … … 644 644 //-------------------------------------------------------------------------- 645 645 // ExprStmt 646 template< typename pass_t >647 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::ExprStmt * node ) {646 template< typename core_t > 647 const ast::Stmt * ast::Pass< core_t >::visit( const ast::ExprStmt * node ) { 648 648 VISIT_START( node ); 649 649 … … 657 657 //-------------------------------------------------------------------------- 658 658 // AsmStmt 659 template< typename pass_t >660 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::AsmStmt * node ) {659 template< typename core_t > 660 const ast::Stmt * ast::Pass< core_t >::visit( const ast::AsmStmt * node ) { 661 661 VISIT_START( node ) 662 662 … … 673 673 //-------------------------------------------------------------------------- 674 674 // DirectiveStmt 675 template< typename pass_t >676 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::DirectiveStmt * node ) {675 template< typename core_t > 676 const ast::Stmt * ast::Pass< core_t >::visit( const ast::DirectiveStmt * node ) { 677 677 VISIT_START( node ) 678 678 … … 682 682 //-------------------------------------------------------------------------- 683 683 // IfStmt 684 template< typename pass_t >685 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::IfStmt * node ) {684 template< typename core_t > 685 const ast::Stmt * ast::Pass< core_t >::visit( const ast::IfStmt * node ) { 686 686 VISIT_START( node ); 687 687 … … 700 700 //-------------------------------------------------------------------------- 701 701 // WhileStmt 702 template< typename pass_t >703 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::WhileStmt * node ) {702 template< typename core_t > 703 const ast::Stmt * ast::Pass< core_t >::visit( const ast::WhileStmt * node ) { 704 704 VISIT_START( node ); 705 705 … … 717 717 //-------------------------------------------------------------------------- 718 718 // ForStmt 719 template< typename pass_t >720 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::ForStmt * node ) {719 template< typename core_t > 720 const ast::Stmt * ast::Pass< core_t >::visit( const ast::ForStmt * node ) { 721 721 VISIT_START( node ); 722 722 … … 735 735 //-------------------------------------------------------------------------- 736 736 // SwitchStmt 737 template< typename pass_t >738 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::SwitchStmt * node ) {737 template< typename core_t > 738 const ast::Stmt * ast::Pass< core_t >::visit( const ast::SwitchStmt * node ) { 739 739 VISIT_START( node ); 740 740 … … 749 749 //-------------------------------------------------------------------------- 750 750 // CaseStmt 751 template< typename pass_t >752 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::CaseStmt * node ) {751 template< typename core_t > 752 const ast::Stmt * ast::Pass< core_t >::visit( const ast::CaseStmt * node ) { 753 753 VISIT_START( node ); 754 754 … … 763 763 //-------------------------------------------------------------------------- 764 764 // BranchStmt 765 template< typename pass_t >766 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::BranchStmt * node ) {765 template< typename core_t > 766 const ast::Stmt * ast::Pass< core_t >::visit( const ast::BranchStmt * node ) { 767 767 VISIT_START( node ); 768 768 VISIT_END( Stmt, node ); … … 771 771 //-------------------------------------------------------------------------- 772 772 // ReturnStmt 773 template< typename pass_t >774 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::ReturnStmt * node ) {773 template< typename core_t > 774 const ast::Stmt * ast::Pass< core_t >::visit( const ast::ReturnStmt * node ) { 775 775 VISIT_START( node ); 776 776 … … 784 784 //-------------------------------------------------------------------------- 785 785 // ThrowStmt 786 template< typename pass_t >787 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::ThrowStmt * node ) {786 template< typename core_t > 787 const ast::Stmt * ast::Pass< core_t >::visit( const ast::ThrowStmt * node ) { 788 788 VISIT_START( node ); 789 789 … … 798 798 //-------------------------------------------------------------------------- 799 799 // TryStmt 800 template< typename pass_t >801 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::TryStmt * node ) {800 template< typename core_t > 801 const ast::Stmt * ast::Pass< core_t >::visit( const ast::TryStmt * node ) { 802 802 VISIT_START( node ); 803 803 … … 813 813 //-------------------------------------------------------------------------- 814 814 // CatchStmt 815 template< typename pass_t >816 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::CatchStmt * node ) {815 template< typename core_t > 816 const ast::Stmt * ast::Pass< core_t >::visit( const ast::CatchStmt * node ) { 817 817 VISIT_START( node ); 818 818 … … 830 830 //-------------------------------------------------------------------------- 831 831 // FinallyStmt 832 template< typename pass_t >833 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::FinallyStmt * node ) {832 template< typename core_t > 833 const ast::Stmt * ast::Pass< core_t >::visit( const ast::FinallyStmt * node ) { 834 834 VISIT_START( node ); 835 835 … … 843 843 //-------------------------------------------------------------------------- 844 844 // FinallyStmt 845 template< typename pass_t >846 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::SuspendStmt * node ) {845 template< typename core_t > 846 const ast::Stmt * ast::Pass< core_t >::visit( const ast::SuspendStmt * node ) { 847 847 VISIT_START( node ); 848 848 … … 856 856 //-------------------------------------------------------------------------- 857 857 // WaitForStmt 858 template< typename pass_t >859 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::WaitForStmt * node ) {858 template< typename core_t > 859 const ast::Stmt * ast::Pass< core_t >::visit( const ast::WaitForStmt * node ) { 860 860 VISIT_START( node ); 861 861 // for( auto & clause : node->clauses ) { … … 925 925 //-------------------------------------------------------------------------- 926 926 // WithStmt 927 template< typename pass_t >928 const ast::Decl * ast::Pass< pass_t >::visit( const ast::WithStmt * node ) {927 template< typename core_t > 928 const ast::Decl * ast::Pass< core_t >::visit( const ast::WithStmt * node ) { 929 929 VISIT_START( node ); 930 930 … … 934 934 // catch statements introduce a level of scope (for the caught exception) 935 935 guard_symtab guard { *this }; 936 __pass::symtab::addWith( pass, 0, node->exprs, node );936 __pass::symtab::addWith( core, 0, node->exprs, node ); 937 937 maybe_accept( node, &WithStmt::stmt ); 938 938 } … … 943 943 //-------------------------------------------------------------------------- 944 944 // NullStmt 945 template< typename pass_t >946 const ast::NullStmt * ast::Pass< pass_t >::visit( const ast::NullStmt * node ) {945 template< typename core_t > 946 const ast::NullStmt * ast::Pass< core_t >::visit( const ast::NullStmt * node ) { 947 947 VISIT_START( node ); 948 948 VISIT_END( NullStmt, node ); … … 951 951 //-------------------------------------------------------------------------- 952 952 // DeclStmt 953 template< typename pass_t >954 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::DeclStmt * node ) {953 template< typename core_t > 954 const ast::Stmt * ast::Pass< core_t >::visit( const ast::DeclStmt * node ) { 955 955 VISIT_START( node ); 956 956 … … 964 964 //-------------------------------------------------------------------------- 965 965 // ImplicitCtorDtorStmt 966 template< typename pass_t >967 const ast::Stmt * ast::Pass< pass_t >::visit( const ast::ImplicitCtorDtorStmt * node ) {966 template< typename core_t > 967 const ast::Stmt * ast::Pass< core_t >::visit( const ast::ImplicitCtorDtorStmt * node ) { 968 968 VISIT_START( node ); 969 969 … … 979 979 //-------------------------------------------------------------------------- 980 980 // ApplicationExpr 981 template< typename pass_t >982 const ast::Expr * ast::Pass< pass_t >::visit( const ast::ApplicationExpr * node ) {981 template< typename core_t > 982 const ast::Expr * ast::Pass< core_t >::visit( const ast::ApplicationExpr * node ) { 983 983 VISIT_START( node ); 984 984 … … 997 997 //-------------------------------------------------------------------------- 998 998 // UntypedExpr 999 template< typename pass_t >1000 const ast::Expr * ast::Pass< pass_t >::visit( const ast::UntypedExpr * node ) {999 template< typename core_t > 1000 const ast::Expr * ast::Pass< core_t >::visit( const ast::UntypedExpr * node ) { 1001 1001 VISIT_START( node ); 1002 1002 … … 1015 1015 //-------------------------------------------------------------------------- 1016 1016 // NameExpr 1017 template< typename pass_t >1018 const ast::Expr * ast::Pass< pass_t >::visit( const ast::NameExpr * node ) {1017 template< typename core_t > 1018 const ast::Expr * ast::Pass< core_t >::visit( const ast::NameExpr * node ) { 1019 1019 VISIT_START( node ); 1020 1020 … … 1029 1029 //-------------------------------------------------------------------------- 1030 1030 // CastExpr 1031 template< typename pass_t >1032 const ast::Expr * ast::Pass< pass_t >::visit( const ast::CastExpr * node ) {1031 template< typename core_t > 1032 const ast::Expr * ast::Pass< core_t >::visit( const ast::CastExpr * node ) { 1033 1033 VISIT_START( node ); 1034 1034 … … 1045 1045 //-------------------------------------------------------------------------- 1046 1046 // KeywordCastExpr 1047 template< typename pass_t >1048 const ast::Expr * ast::Pass< pass_t >::visit( const ast::KeywordCastExpr * node ) {1047 template< typename core_t > 1048 const ast::Expr * ast::Pass< core_t >::visit( const ast::KeywordCastExpr * node ) { 1049 1049 VISIT_START( node ); 1050 1050 … … 1061 1061 //-------------------------------------------------------------------------- 1062 1062 // VirtualCastExpr 1063 template< typename pass_t >1064 const ast::Expr * ast::Pass< pass_t >::visit( const ast::VirtualCastExpr * node ) {1063 template< typename core_t > 1064 const ast::Expr * ast::Pass< core_t >::visit( const ast::VirtualCastExpr * node ) { 1065 1065 VISIT_START( node ); 1066 1066 … … 1077 1077 //-------------------------------------------------------------------------- 1078 1078 // AddressExpr 1079 template< typename pass_t >1080 const ast::Expr * ast::Pass< pass_t >::visit( const ast::AddressExpr * node ) {1079 template< typename core_t > 1080 const ast::Expr * ast::Pass< core_t >::visit( const ast::AddressExpr * node ) { 1081 1081 VISIT_START( node ); 1082 1082 … … 1093 1093 //-------------------------------------------------------------------------- 1094 1094 // LabelAddressExpr 1095 template< typename pass_t >1096 const ast::Expr * ast::Pass< pass_t >::visit( const ast::LabelAddressExpr * node ) {1095 template< typename core_t > 1096 const ast::Expr * ast::Pass< core_t >::visit( const ast::LabelAddressExpr * node ) { 1097 1097 VISIT_START( node ); 1098 1098 … … 1107 1107 //-------------------------------------------------------------------------- 1108 1108 // UntypedMemberExpr 1109 template< typename pass_t >1110 const ast::Expr * ast::Pass< pass_t >::visit( const ast::UntypedMemberExpr * node ) {1109 template< typename core_t > 1110 const ast::Expr * ast::Pass< core_t >::visit( const ast::UntypedMemberExpr * node ) { 1111 1111 VISIT_START( node ); 1112 1112 … … 1124 1124 //-------------------------------------------------------------------------- 1125 1125 // MemberExpr 1126 template< typename pass_t >1127 const ast::Expr * ast::Pass< pass_t >::visit( const ast::MemberExpr * node ) {1126 template< typename core_t > 1127 const ast::Expr * ast::Pass< core_t >::visit( const ast::MemberExpr * node ) { 1128 1128 VISIT_START( node ); 1129 1129 … … 1140 1140 //-------------------------------------------------------------------------- 1141 1141 // VariableExpr 1142 template< typename pass_t >1143 const ast::Expr * ast::Pass< pass_t >::visit( const ast::VariableExpr * node ) {1142 template< typename core_t > 1143 const ast::Expr * ast::Pass< core_t >::visit( const ast::VariableExpr * node ) { 1144 1144 VISIT_START( node ); 1145 1145 … … 1154 1154 //-------------------------------------------------------------------------- 1155 1155 // ConstantExpr 1156 template< typename pass_t >1157 const ast::Expr * ast::Pass< pass_t >::visit( const ast::ConstantExpr * node ) {1156 template< typename core_t > 1157 const ast::Expr * ast::Pass< core_t >::visit( const ast::ConstantExpr * node ) { 1158 1158 VISIT_START( node ); 1159 1159 … … 1168 1168 //-------------------------------------------------------------------------- 1169 1169 // SizeofExpr 1170 template< typename pass_t >1171 const ast::Expr * ast::Pass< pass_t >::visit( const ast::SizeofExpr * node ) {1170 template< typename core_t > 1171 const ast::Expr * ast::Pass< core_t >::visit( const ast::SizeofExpr * node ) { 1172 1172 VISIT_START( node ); 1173 1173 … … 1188 1188 //-------------------------------------------------------------------------- 1189 1189 // AlignofExpr 1190 template< typename pass_t >1191 const ast::Expr * ast::Pass< pass_t >::visit( const ast::AlignofExpr * node ) {1190 template< typename core_t > 1191 const ast::Expr * ast::Pass< core_t >::visit( const ast::AlignofExpr * node ) { 1192 1192 VISIT_START( node ); 1193 1193 … … 1208 1208 //-------------------------------------------------------------------------- 1209 1209 // UntypedOffsetofExpr 1210 template< typename pass_t >1211 const ast::Expr * ast::Pass< pass_t >::visit( const ast::UntypedOffsetofExpr * node ) {1210 template< typename core_t > 1211 const ast::Expr * ast::Pass< core_t >::visit( const ast::UntypedOffsetofExpr * node ) { 1212 1212 VISIT_START( node ); 1213 1213 … … 1224 1224 //-------------------------------------------------------------------------- 1225 1225 // OffsetofExpr 1226 template< typename pass_t >1227 const ast::Expr * ast::Pass< pass_t >::visit( const ast::OffsetofExpr * node ) {1226 template< typename core_t > 1227 const ast::Expr * ast::Pass< core_t >::visit( const ast::OffsetofExpr * node ) { 1228 1228 VISIT_START( node ); 1229 1229 … … 1240 1240 //-------------------------------------------------------------------------- 1241 1241 // OffsetPackExpr 1242 template< typename pass_t >1243 const ast::Expr * ast::Pass< pass_t >::visit( const ast::OffsetPackExpr * node ) {1242 template< typename core_t > 1243 const ast::Expr * ast::Pass< core_t >::visit( const ast::OffsetPackExpr * node ) { 1244 1244 VISIT_START( node ); 1245 1245 … … 1256 1256 //-------------------------------------------------------------------------- 1257 1257 // LogicalExpr 1258 template< typename pass_t >1259 const ast::Expr * ast::Pass< pass_t >::visit( const ast::LogicalExpr * node ) {1258 template< typename core_t > 1259 const ast::Expr * ast::Pass< core_t >::visit( const ast::LogicalExpr * node ) { 1260 1260 VISIT_START( node ); 1261 1261 … … 1273 1273 //-------------------------------------------------------------------------- 1274 1274 // ConditionalExpr 1275 template< typename pass_t >1276 const ast::Expr * ast::Pass< pass_t >::visit( const ast::ConditionalExpr * node ) {1275 template< typename core_t > 1276 const ast::Expr * ast::Pass< core_t >::visit( const ast::ConditionalExpr * node ) { 1277 1277 VISIT_START( node ); 1278 1278 … … 1291 1291 //-------------------------------------------------------------------------- 1292 1292 // CommaExpr 1293 template< typename pass_t >1294 const ast::Expr * ast::Pass< pass_t >::visit( const ast::CommaExpr * node ) {1293 template< typename core_t > 1294 const ast::Expr * ast::Pass< core_t >::visit( const ast::CommaExpr * node ) { 1295 1295 VISIT_START( node ); 1296 1296 … … 1308 1308 //-------------------------------------------------------------------------- 1309 1309 // TypeExpr 1310 template< typename pass_t >1311 const ast::Expr * ast::Pass< pass_t >::visit( const ast::TypeExpr * node ) {1310 template< typename core_t > 1311 const ast::Expr * ast::Pass< core_t >::visit( const ast::TypeExpr * node ) { 1312 1312 VISIT_START( node ); 1313 1313 … … 1324 1324 //-------------------------------------------------------------------------- 1325 1325 // AsmExpr 1326 template< typename pass_t >1327 const ast::Expr * ast::Pass< pass_t >::visit( const ast::AsmExpr * node ) {1326 template< typename core_t > 1327 const ast::Expr * ast::Pass< core_t >::visit( const ast::AsmExpr * node ) { 1328 1328 VISIT_START( node ); 1329 1329 … … 1341 1341 //-------------------------------------------------------------------------- 1342 1342 // ImplicitCopyCtorExpr 1343 template< typename pass_t >1344 const ast::Expr * ast::Pass< pass_t >::visit( const ast::ImplicitCopyCtorExpr * node ) {1343 template< typename core_t > 1344 const ast::Expr * ast::Pass< core_t >::visit( const ast::ImplicitCopyCtorExpr * node ) { 1345 1345 VISIT_START( node ); 1346 1346 … … 1357 1357 //-------------------------------------------------------------------------- 1358 1358 // ConstructorExpr 1359 template< typename pass_t >1360 const ast::Expr * ast::Pass< pass_t >::visit( const ast::ConstructorExpr * node ) {1359 template< typename core_t > 1360 const ast::Expr * ast::Pass< core_t >::visit( const ast::ConstructorExpr * node ) { 1361 1361 VISIT_START( node ); 1362 1362 … … 1373 1373 //-------------------------------------------------------------------------- 1374 1374 // CompoundLiteralExpr 1375 template< typename pass_t >1376 const ast::Expr * ast::Pass< pass_t >::visit( const ast::CompoundLiteralExpr * node ) {1375 template< typename core_t > 1376 const ast::Expr * ast::Pass< core_t >::visit( const ast::CompoundLiteralExpr * node ) { 1377 1377 VISIT_START( node ); 1378 1378 … … 1389 1389 //-------------------------------------------------------------------------- 1390 1390 // RangeExpr 1391 template< typename pass_t >1392 const ast::Expr * ast::Pass< pass_t >::visit( const ast::RangeExpr * node ) {1391 template< typename core_t > 1392 const ast::Expr * ast::Pass< core_t >::visit( const ast::RangeExpr * node ) { 1393 1393 VISIT_START( node ); 1394 1394 … … 1406 1406 //-------------------------------------------------------------------------- 1407 1407 // UntypedTupleExpr 1408 template< typename pass_t >1409 const ast::Expr * ast::Pass< pass_t >::visit( const ast::UntypedTupleExpr * node ) {1408 template< typename core_t > 1409 const ast::Expr * ast::Pass< core_t >::visit( const ast::UntypedTupleExpr * node ) { 1410 1410 VISIT_START( node ); 1411 1411 … … 1422 1422 //-------------------------------------------------------------------------- 1423 1423 // TupleExpr 1424 template< typename pass_t >1425 const ast::Expr * ast::Pass< pass_t >::visit( const ast::TupleExpr * node ) {1424 template< typename core_t > 1425 const ast::Expr * ast::Pass< core_t >::visit( const ast::TupleExpr * node ) { 1426 1426 VISIT_START( node ); 1427 1427 … … 1438 1438 //-------------------------------------------------------------------------- 1439 1439 // TupleIndexExpr 1440 template< typename pass_t >1441 const ast::Expr * ast::Pass< pass_t >::visit( const ast::TupleIndexExpr * node ) {1440 template< typename core_t > 1441 const ast::Expr * ast::Pass< core_t >::visit( const ast::TupleIndexExpr * node ) { 1442 1442 VISIT_START( node ); 1443 1443 … … 1454 1454 //-------------------------------------------------------------------------- 1455 1455 // TupleAssignExpr 1456 template< typename pass_t >1457 const ast::Expr * ast::Pass< pass_t >::visit( const ast::TupleAssignExpr * node ) {1456 template< typename core_t > 1457 const ast::Expr * ast::Pass< core_t >::visit( const ast::TupleAssignExpr * node ) { 1458 1458 VISIT_START( node ); 1459 1459 … … 1470 1470 //-------------------------------------------------------------------------- 1471 1471 // StmtExpr 1472 template< typename pass_t >1473 const ast::Expr * ast::Pass< pass_t >::visit( const ast::StmtExpr * node ) {1472 template< typename core_t > 1473 const ast::Expr * ast::Pass< core_t >::visit( const ast::StmtExpr * node ) { 1474 1474 VISIT_START( node ); 1475 1475 1476 1476 VISIT(// don't want statements from outer CompoundStmts to be added to this StmtExpr 1477 1477 // get the stmts that will need to be spliced in 1478 auto stmts_before = __pass::stmtsToAddBefore( pass, 0);1479 auto stmts_after = __pass::stmtsToAddAfter ( pass, 0);1478 auto stmts_before = __pass::stmtsToAddBefore( core, 0); 1479 auto stmts_after = __pass::stmtsToAddAfter ( core, 0); 1480 1480 1481 1481 // These may be modified by subnode but most be restored once we exit this statemnet. 1482 ValueGuardPtr< const ast::TypeSubstitution * > __old_env( __pass::env( pass, 0) );1482 ValueGuardPtr< const ast::TypeSubstitution * > __old_env( __pass::env( core, 0) ); 1483 1483 ValueGuardPtr< typename std::remove_pointer< decltype(stmts_before) >::type > __old_decls_before( stmts_before ); 1484 1484 ValueGuardPtr< typename std::remove_pointer< decltype(stmts_after ) >::type > __old_decls_after ( stmts_after ); … … 1498 1498 //-------------------------------------------------------------------------- 1499 1499 // UniqueExpr 1500 template< typename pass_t >1501 const ast::Expr * ast::Pass< pass_t >::visit( const ast::UniqueExpr * node ) {1500 template< typename core_t > 1501 const ast::Expr * ast::Pass< core_t >::visit( const ast::UniqueExpr * node ) { 1502 1502 VISIT_START( node ); 1503 1503 … … 1514 1514 //-------------------------------------------------------------------------- 1515 1515 // UntypedInitExpr 1516 template< typename pass_t >1517 const ast::Expr * ast::Pass< pass_t >::visit( const ast::UntypedInitExpr * node ) {1516 template< typename core_t > 1517 const ast::Expr * ast::Pass< core_t >::visit( const ast::UntypedInitExpr * node ) { 1518 1518 VISIT_START( node ); 1519 1519 … … 1531 1531 //-------------------------------------------------------------------------- 1532 1532 // InitExpr 1533 template< typename pass_t >1534 const ast::Expr * ast::Pass< pass_t >::visit( const ast::InitExpr * node ) {1533 template< typename core_t > 1534 const ast::Expr * ast::Pass< core_t >::visit( const ast::InitExpr * node ) { 1535 1535 VISIT_START( node ); 1536 1536 … … 1548 1548 //-------------------------------------------------------------------------- 1549 1549 // DeletedExpr 1550 template< typename pass_t >1551 const ast::Expr * ast::Pass< pass_t >::visit( const ast::DeletedExpr * node ) {1550 template< typename core_t > 1551 const ast::Expr * ast::Pass< core_t >::visit( const ast::DeletedExpr * node ) { 1552 1552 VISIT_START( node ); 1553 1553 … … 1565 1565 //-------------------------------------------------------------------------- 1566 1566 // DefaultArgExpr 1567 template< typename pass_t >1568 const ast::Expr * ast::Pass< pass_t >::visit( const ast::DefaultArgExpr * node ) {1567 template< typename core_t > 1568 const ast::Expr * ast::Pass< core_t >::visit( const ast::DefaultArgExpr * node ) { 1569 1569 VISIT_START( node ); 1570 1570 … … 1581 1581 //-------------------------------------------------------------------------- 1582 1582 // GenericExpr 1583 template< typename pass_t >1584 const ast::Expr * ast::Pass< pass_t >::visit( const ast::GenericExpr * node ) {1583 template< typename core_t > 1584 const ast::Expr * ast::Pass< core_t >::visit( const ast::GenericExpr * node ) { 1585 1585 VISIT_START( node ); 1586 1586 … … 1621 1621 //-------------------------------------------------------------------------- 1622 1622 // VoidType 1623 template< typename pass_t >1624 const ast::Type * ast::Pass< pass_t >::visit( const ast::VoidType * node ) {1623 template< typename core_t > 1624 const ast::Type * ast::Pass< core_t >::visit( const ast::VoidType * node ) { 1625 1625 VISIT_START( node ); 1626 1626 … … 1630 1630 //-------------------------------------------------------------------------- 1631 1631 // BasicType 1632 template< typename pass_t >1633 const ast::Type * ast::Pass< pass_t >::visit( const ast::BasicType * node ) {1632 template< typename core_t > 1633 const ast::Type * ast::Pass< core_t >::visit( const ast::BasicType * node ) { 1634 1634 VISIT_START( node ); 1635 1635 … … 1639 1639 //-------------------------------------------------------------------------- 1640 1640 // PointerType 1641 template< typename pass_t >1642 const ast::Type * ast::Pass< pass_t >::visit( const ast::PointerType * node ) {1641 template< typename core_t > 1642 const ast::Type * ast::Pass< core_t >::visit( const ast::PointerType * node ) { 1643 1643 VISIT_START( node ); 1644 1644 … … 1653 1653 //-------------------------------------------------------------------------- 1654 1654 // ArrayType 1655 template< typename pass_t >1656 const ast::Type * ast::Pass< pass_t >::visit( const ast::ArrayType * node ) {1655 template< typename core_t > 1656 const ast::Type * ast::Pass< core_t >::visit( const ast::ArrayType * node ) { 1657 1657 VISIT_START( node ); 1658 1658 … … 1667 1667 //-------------------------------------------------------------------------- 1668 1668 // ReferenceType 1669 template< typename pass_t >1670 const ast::Type * ast::Pass< pass_t >::visit( const ast::ReferenceType * node ) {1669 template< typename core_t > 1670 const ast::Type * ast::Pass< core_t >::visit( const ast::ReferenceType * node ) { 1671 1671 VISIT_START( node ); 1672 1672 … … 1680 1680 //-------------------------------------------------------------------------- 1681 1681 // QualifiedType 1682 template< typename pass_t >1683 const ast::Type * ast::Pass< pass_t >::visit( const ast::QualifiedType * node ) {1682 template< typename core_t > 1683 const ast::Type * ast::Pass< core_t >::visit( const ast::QualifiedType * node ) { 1684 1684 VISIT_START( node ); 1685 1685 … … 1694 1694 //-------------------------------------------------------------------------- 1695 1695 // FunctionType 1696 template< typename pass_t >1697 const ast::Type * ast::Pass< pass_t >::visit( const ast::FunctionType * node ) {1696 template< typename core_t > 1697 const ast::Type * ast::Pass< core_t >::visit( const ast::FunctionType * node ) { 1698 1698 VISIT_START( node ); 1699 1699 … … 1710 1710 //-------------------------------------------------------------------------- 1711 1711 // StructInstType 1712 template< typename pass_t >1713 const ast::Type * ast::Pass< pass_t >::visit( const ast::StructInstType * node ) {1714 VISIT_START( node ); 1715 1716 __pass::symtab::addStruct( pass, 0, node->name );1712 template< typename core_t > 1713 const ast::Type * ast::Pass< core_t >::visit( const ast::StructInstType * node ) { 1714 VISIT_START( node ); 1715 1716 __pass::symtab::addStruct( core, 0, node->name ); 1717 1717 1718 1718 VISIT({ … … 1728 1728 //-------------------------------------------------------------------------- 1729 1729 // UnionInstType 1730 template< typename pass_t >1731 const ast::Type * ast::Pass< pass_t >::visit( const ast::UnionInstType * node ) {1732 VISIT_START( node ); 1733 1734 __pass::symtab::addUnion( pass, 0, node->name );1730 template< typename core_t > 1731 const ast::Type * ast::Pass< core_t >::visit( const ast::UnionInstType * node ) { 1732 VISIT_START( node ); 1733 1734 __pass::symtab::addUnion( core, 0, node->name ); 1735 1735 1736 1736 VISIT({ … … 1746 1746 //-------------------------------------------------------------------------- 1747 1747 // EnumInstType 1748 template< typename pass_t >1749 const ast::Type * ast::Pass< pass_t >::visit( const ast::EnumInstType * node ) {1748 template< typename core_t > 1749 const ast::Type * ast::Pass< core_t >::visit( const ast::EnumInstType * node ) { 1750 1750 VISIT_START( node ); 1751 1751 … … 1761 1761 //-------------------------------------------------------------------------- 1762 1762 // TraitInstType 1763 template< typename pass_t >1764 const ast::Type * ast::Pass< pass_t >::visit( const ast::TraitInstType * node ) {1763 template< typename core_t > 1764 const ast::Type * ast::Pass< core_t >::visit( const ast::TraitInstType * node ) { 1765 1765 VISIT_START( node ); 1766 1766 … … 1776 1776 //-------------------------------------------------------------------------- 1777 1777 // TypeInstType 1778 template< typename pass_t >1779 const ast::Type * ast::Pass< pass_t >::visit( const ast::TypeInstType * node ) {1778 template< typename core_t > 1779 const ast::Type * ast::Pass< core_t >::visit( const ast::TypeInstType * node ) { 1780 1780 VISIT_START( node ); 1781 1781 … … 1787 1787 } 1788 1788 // ensure that base re-bound if doing substitution 1789 __pass::forall::replace( pass, 0, node );1789 __pass::forall::replace( core, 0, node ); 1790 1790 ) 1791 1791 … … 1795 1795 //-------------------------------------------------------------------------- 1796 1796 // TupleType 1797 template< typename pass_t >1798 const ast::Type * ast::Pass< pass_t >::visit( const ast::TupleType * node ) {1797 template< typename core_t > 1798 const ast::Type * ast::Pass< core_t >::visit( const ast::TupleType * node ) { 1799 1799 VISIT_START( node ); 1800 1800 … … 1809 1809 //-------------------------------------------------------------------------- 1810 1810 // TypeofType 1811 template< typename pass_t >1812 const ast::Type * ast::Pass< pass_t >::visit( const ast::TypeofType * node ) {1811 template< typename core_t > 1812 const ast::Type * ast::Pass< core_t >::visit( const ast::TypeofType * node ) { 1813 1813 VISIT_START( node ); 1814 1814 … … 1822 1822 //-------------------------------------------------------------------------- 1823 1823 // VarArgsType 1824 template< typename pass_t >1825 const ast::Type * ast::Pass< pass_t >::visit( const ast::VarArgsType * node ) {1824 template< typename core_t > 1825 const ast::Type * ast::Pass< core_t >::visit( const ast::VarArgsType * node ) { 1826 1826 VISIT_START( node ); 1827 1827 … … 1831 1831 //-------------------------------------------------------------------------- 1832 1832 // ZeroType 1833 template< typename pass_t >1834 const ast::Type * ast::Pass< pass_t >::visit( const ast::ZeroType * node ) {1833 template< typename core_t > 1834 const ast::Type * ast::Pass< core_t >::visit( const ast::ZeroType * node ) { 1835 1835 VISIT_START( node ); 1836 1836 … … 1840 1840 //-------------------------------------------------------------------------- 1841 1841 // OneType 1842 template< typename pass_t >1843 const ast::Type * ast::Pass< pass_t >::visit( const ast::OneType * node ) {1842 template< typename core_t > 1843 const ast::Type * ast::Pass< core_t >::visit( const ast::OneType * node ) { 1844 1844 VISIT_START( node ); 1845 1845 … … 1849 1849 //-------------------------------------------------------------------------- 1850 1850 // GlobalScopeType 1851 template< typename pass_t >1852 const ast::Type * ast::Pass< pass_t >::visit( const ast::GlobalScopeType * node ) {1851 template< typename core_t > 1852 const ast::Type * ast::Pass< core_t >::visit( const ast::GlobalScopeType * node ) { 1853 1853 VISIT_START( node ); 1854 1854 … … 1859 1859 //-------------------------------------------------------------------------- 1860 1860 // Designation 1861 template< typename pass_t >1862 const ast::Designation * ast::Pass< pass_t >::visit( const ast::Designation * node ) {1861 template< typename core_t > 1862 const ast::Designation * ast::Pass< core_t >::visit( const ast::Designation * node ) { 1863 1863 VISIT_START( node ); 1864 1864 … … 1870 1870 //-------------------------------------------------------------------------- 1871 1871 // SingleInit 1872 template< typename pass_t >1873 const ast::Init * ast::Pass< pass_t >::visit( const ast::SingleInit * node ) {1872 template< typename core_t > 1873 const ast::Init * ast::Pass< core_t >::visit( const ast::SingleInit * node ) { 1874 1874 VISIT_START( node ); 1875 1875 … … 1883 1883 //-------------------------------------------------------------------------- 1884 1884 // ListInit 1885 template< typename pass_t >1886 const ast::Init * ast::Pass< pass_t >::visit( const ast::ListInit * node ) {1885 template< typename core_t > 1886 const ast::Init * ast::Pass< core_t >::visit( const ast::ListInit * node ) { 1887 1887 VISIT_START( node ); 1888 1888 … … 1897 1897 //-------------------------------------------------------------------------- 1898 1898 // ConstructorInit 1899 template< typename pass_t >1900 const ast::Init * ast::Pass< pass_t >::visit( const ast::ConstructorInit * node ) {1899 template< typename core_t > 1900 const ast::Init * ast::Pass< core_t >::visit( const ast::ConstructorInit * node ) { 1901 1901 VISIT_START( node ); 1902 1902 … … 1912 1912 //-------------------------------------------------------------------------- 1913 1913 // Attribute 1914 template< typename pass_t >1915 const ast::Attribute * ast::Pass< pass_t >::visit( const ast::Attribute * node ) {1914 template< typename core_t > 1915 const ast::Attribute * ast::Pass< core_t >::visit( const ast::Attribute * node ) { 1916 1916 VISIT_START( node ); 1917 1917 … … 1925 1925 //-------------------------------------------------------------------------- 1926 1926 // TypeSubstitution 1927 template< typename pass_t >1928 const ast::TypeSubstitution * ast::Pass< pass_t >::visit( const ast::TypeSubstitution * node ) {1927 template< typename core_t > 1928 const ast::TypeSubstitution * ast::Pass< core_t >::visit( const ast::TypeSubstitution * node ) { 1929 1929 VISIT_START( node ); 1930 1930
Note: See TracChangeset
for help on using the changeset viewer.