Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Chain.hpp

    r2345ab3 r4864a73  
    3333        template<typename actual_node_t, typename child_t>
    3434        auto operator()( child_t actual_node_t::*child ) {
    35                 node_t * n = base.get_and_mutate();
     35                auto n = mutate(base.get());
    3636                actual_node_t * node = strict_dynamic_cast<actual_node_t *>(n);
     37                base = node;
    3738                return _chain_mutator< typename std::remove_reference< decltype(node->*child) >::type >{node->*child};
    3839        }
    3940
    4041        node_t * operator->() {
    41                 return base.get_and_mutate();
     42                auto n = mutate(base.get());
     43                base = n;
     44                return n;
    4245        }
    4346};
Note: See TracChangeset for help on using the changeset viewer.