コード例 #1
0
 result_type operator()(const bind &b) {
     assert(detail::isinstance<name>(b.lhs()));
     const name& lhs = boost::get<const name&>(b.lhs());
     if (m_declared.exists(lhs.id())) {
         m_modified.insert(lhs.id());
     } else {
         m_declared.insert(lhs.id());
     }
     return b.ptr();
 }
コード例 #2
0
 result_type operator()(const procedure &p) {
     for(auto i = p.args().begin();
         i != p.args().end();
         i++) {
         assert(detail::isinstance<name>(*i));
         const name& arg_name = boost::get<const name&>(*i);
         m_declared.insert(arg_name.id());
     }
     return rewriter<protector>::operator()(p);
 }