Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Pass.hpp

    rbe8518f re16e27e1  
    262262/// Used to restore values/functions/etc. when the Pass finishes visiting this node
    263263class WithGuards {
    264         __pass::at_cleanup_t at_cleanup;
    265 
     264        __pass::at_cleanup_t at_cleanup = [](__pass::cleanup_func_t, void*) {
     265                std::cerr << "No cleanup function was set" << std::endl;
     266                abort();
     267        };
     268
     269        template< typename pass_t>
     270        friend auto __pass::at_cleanup( pass_t & pass, int ) -> decltype( &pass.at_cleanup );
    266271public:
     272
    267273        /// When this node is finished being visited, restore the value of a variable
    268274        template< typename T >
     
    287293                at_cleanup( [func](void *) { func(); }, nullptr );
    288294        }
    289 
    290         /// When this node is finished being visited, call a member of an object.
    291         template<typename T>
    292         void GuardMethod( T * obj, void (T::*method)() ) {
    293                 at_cleanup( [ method ]( void * object ) {
    294                         static_cast< T * >( object )->method();
    295                 }, static_cast< void * >( obj ) );
    296         }
    297295};
    298296
Note: See TracChangeset for help on using the changeset viewer.