Convert all code that uses walk.rs in the straightforward way to simple_visit
Code that needs the keep_going functionality is still using walk. I will add an equivalent to visit.rs later.
This commit is contained in:
parent
473a03a214
commit
e133f929b7
6 changed files with 53 additions and 60 deletions
|
@ -8,7 +8,7 @@ import lib::llvm::mk_object_file;
|
|||
import lib::llvm::mk_section_iter;
|
||||
import front::attr;
|
||||
import middle::resolve;
|
||||
import syntax::walk;
|
||||
import syntax::visit;
|
||||
import syntax::codemap::span;
|
||||
import back::x86;
|
||||
import util::common;
|
||||
|
@ -36,11 +36,11 @@ fn read_crates(session::session sess,
|
|||
crate_cache=@std::map::new_str_hash[int](),
|
||||
library_search_paths=sess.get_opts().library_search_paths,
|
||||
mutable next_crate_num=1);
|
||||
auto v =
|
||||
rec(visit_view_item_pre=bind visit_view_item(e, _),
|
||||
visit_item_pre=bind visit_item(e, _)
|
||||
with walk::default_visitor());
|
||||
walk::walk_crate(v, crate);
|
||||
auto v = visit::mk_simple_visitor
|
||||
(@rec(visit_view_item=bind visit_view_item(e, _),
|
||||
visit_item=bind visit_item(e, _)
|
||||
with *visit::default_simple_visitor()));
|
||||
visit::visit_crate(crate, (), v);
|
||||
}
|
||||
|
||||
type env =
|
||||
|
|
|
@ -8,7 +8,7 @@ import std::option;
|
|||
import std::int;
|
||||
import std::option::*;
|
||||
import syntax::ast;
|
||||
import syntax::walk;
|
||||
import syntax::visit;
|
||||
import driver::session;
|
||||
import middle::resolve;
|
||||
import syntax::codemap::span;
|
||||
|
@ -33,7 +33,7 @@ type freevar_map = hashmap[ast::node_id, freevar_info];
|
|||
// of the AST, we take a walker function that we invoke with a visitor
|
||||
// in order to start the search.
|
||||
fn collect_freevars(&resolve::def_map def_map, &session::session sess,
|
||||
&fn (&walk::ast_visitor) walker,
|
||||
&fn (&visit::vt[()]) walker,
|
||||
ast::node_id[] initial_decls) -> freevar_info {
|
||||
type env =
|
||||
@rec(mutable ast::node_id[] refs,
|
||||
|
@ -76,18 +76,16 @@ fn collect_freevars(&resolve::def_map def_map, &session::session sess,
|
|||
let hashset[ast::node_id] decls = new_int_hash();
|
||||
for (ast::node_id decl in initial_decls) { set_add(decls, decl); }
|
||||
|
||||
let env e =
|
||||
@rec(mutable refs=~[],
|
||||
decls=decls,
|
||||
def_map=def_map,
|
||||
sess=sess);
|
||||
auto visitor =
|
||||
@rec(visit_fn_pre=bind walk_fn(e, _, _, _, _, _),
|
||||
visit_local_pre=bind walk_local(e, _),
|
||||
visit_expr_pre=bind walk_expr(e, _),
|
||||
visit_pat_pre=bind walk_pat(e, _)
|
||||
with walk::default_visitor());
|
||||
walker(*visitor);
|
||||
let env e = @rec(mutable refs=~[],
|
||||
decls=decls,
|
||||
def_map=def_map,
|
||||
sess=sess);
|
||||
walker(visit::mk_simple_visitor(
|
||||
@rec(visit_local=bind walk_local(e, _),
|
||||
visit_pat=bind walk_pat(e, _),
|
||||
visit_expr=bind walk_expr(e, _),
|
||||
visit_fn=bind walk_fn(e, _, _, _, _, _)
|
||||
with *visit::default_simple_visitor())));
|
||||
|
||||
// Calculate (refs - decls). This is the set of captured upvars.
|
||||
// We build a vec of the node ids of the uses and a set of the
|
||||
|
@ -119,16 +117,16 @@ fn annotate_freevars(&session::session sess, &resolve::def_map def_map,
|
|||
|
||||
fn walk_fn(env e, &ast::_fn f, &ast::ty_param[] tps, &span sp,
|
||||
&ast::fn_ident i, ast::node_id nid) {
|
||||
auto walker = bind walk::walk_fn(_, f, tps, sp, i, nid);
|
||||
auto walker = bind visit::visit_fn(f, tps, sp, i, nid, (), _);
|
||||
auto vars = collect_freevars(e.def_map, e.sess, walker, ~[]);
|
||||
e.freevars.insert(nid, vars);
|
||||
}
|
||||
fn walk_expr(env e, &@ast::expr expr) {
|
||||
alt (expr.node) {
|
||||
ast::expr_for_each(?local, _, ?body) {
|
||||
auto vars = collect_freevars(e.def_map, e.sess,
|
||||
bind walk::walk_block(_, body),
|
||||
~[local.node.id]);
|
||||
auto vars = collect_freevars
|
||||
(e.def_map, e.sess, bind visit::visit_block(body, (), _),
|
||||
~[local.node.id]);
|
||||
e.freevars.insert(body.node.id, vars);
|
||||
}
|
||||
_ {}
|
||||
|
@ -137,11 +135,11 @@ fn annotate_freevars(&session::session sess, &resolve::def_map def_map,
|
|||
|
||||
let env e =
|
||||
rec(freevars = new_int_hash(), def_map=def_map, sess=sess);
|
||||
auto visitor =
|
||||
rec(visit_fn_pre=bind walk_fn(e, _, _, _, _, _),
|
||||
visit_expr_pre=bind walk_expr(e, _)
|
||||
with walk::default_visitor());
|
||||
walk::walk_crate(visitor, *crate);
|
||||
auto visitor = visit::mk_simple_visitor
|
||||
(@rec(visit_fn=bind walk_fn(e, _, _, _, _, _),
|
||||
visit_expr=bind walk_expr(e, _)
|
||||
with *visit::default_simple_visitor()));
|
||||
visit::visit_crate(*crate, (), visitor);
|
||||
|
||||
ret e.freevars;
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ import std::option::none;
|
|||
import std::int;
|
||||
import std::uint;
|
||||
import syntax::ast::*;
|
||||
import syntax::walk;
|
||||
import syntax::visit;
|
||||
import syntax::codemap::span;
|
||||
import std::map::new_str_hash;
|
||||
import util::common::log_expr_err;
|
||||
|
@ -53,13 +53,13 @@ fn collect_ids_local(&@local l, @mutable node_id[] rs) {
|
|||
|
||||
fn node_ids_in_fn(&_fn f, &ty_param[] tps, &span sp, &fn_ident i,
|
||||
node_id id, @mutable node_id[] rs) {
|
||||
auto collect_ids = walk::default_visitor();
|
||||
collect_ids =
|
||||
rec(visit_expr_pre=bind collect_ids_expr(_, rs),
|
||||
visit_block_pre=bind collect_ids_block(_, rs),
|
||||
visit_stmt_pre=bind collect_ids_stmt(_, rs),
|
||||
visit_local_pre=bind collect_ids_local(_, rs) with collect_ids);
|
||||
walk::walk_fn(collect_ids, f, tps, sp, i, id);
|
||||
auto collect_ids = visit::mk_simple_visitor
|
||||
(@rec(visit_expr=bind collect_ids_expr(_, rs),
|
||||
visit_block=bind collect_ids_block(_, rs),
|
||||
visit_stmt=bind collect_ids_stmt(_, rs),
|
||||
visit_local=bind collect_ids_local(_, rs)
|
||||
with *visit::default_simple_visitor()));
|
||||
visit::visit_fn(f, tps, sp, i, id, (), collect_ids);
|
||||
}
|
||||
|
||||
fn init_vecs(&crate_ctxt ccx, &node_id[] node_ids, uint len) {
|
||||
|
@ -84,10 +84,10 @@ fn annotate_in_fn(&crate_ctxt ccx, &_fn f, &ty_param[] tps,
|
|||
}
|
||||
|
||||
fn annotate_crate(&crate_ctxt ccx, &crate crate) {
|
||||
auto do_ann = walk::default_visitor();
|
||||
do_ann =
|
||||
rec(visit_fn_pre=bind annotate_in_fn(ccx, _, _, _, _, _) with do_ann);
|
||||
walk::walk_crate(do_ann, crate);
|
||||
auto do_ann = visit::mk_simple_visitor
|
||||
(@rec(visit_fn=bind annotate_in_fn(ccx, _, _, _, _, _)
|
||||
with *visit::default_simple_visitor()));
|
||||
visit::visit_crate(crate, (), do_ann);
|
||||
}
|
||||
//
|
||||
// Local Variables:
|
||||
|
|
|
@ -4,11 +4,7 @@ import std::ivec;
|
|||
import syntax::ast::*;
|
||||
import util::ppaux::fn_ident_to_string;
|
||||
import std::option::*;
|
||||
import syntax::walk;
|
||||
import syntax::visit;
|
||||
import walk::walk_crate;
|
||||
import walk::walk_fn;
|
||||
import walk::ast_visitor;
|
||||
import aux::*;
|
||||
import std::map::new_int_hash;
|
||||
import util::common::new_def_hash;
|
||||
|
@ -137,11 +133,10 @@ fn mk_fn_info(&crate_ctxt ccx, &_fn f, &ty_param[] tp,
|
|||
nested locally defined functions, onto a mapping from local variable name
|
||||
to bit number) */
|
||||
fn mk_f_to_fn_info(&crate_ctxt ccx, @crate c) {
|
||||
let ast_visitor vars_visitor = walk::default_visitor();
|
||||
vars_visitor =
|
||||
rec(visit_fn_pre=bind mk_fn_info(ccx, _, _, _, _, _)
|
||||
with vars_visitor);
|
||||
walk_crate(vars_visitor, *c);
|
||||
auto visitor = visit::mk_simple_visitor
|
||||
(@rec(visit_fn=bind mk_fn_info(ccx, _, _, _, _, _)
|
||||
with *visit::default_simple_visitor()));
|
||||
visit::visit_crate(*c, (), visitor);
|
||||
}
|
||||
//
|
||||
// Local Variables:
|
||||
|
|
|
@ -853,11 +853,11 @@ mod collect {
|
|||
|
||||
auto abi = @mutable none[ast::native_abi];
|
||||
auto cx = @rec(tcx=tcx);
|
||||
auto visit =
|
||||
rec(visit_item_pre=bind convert(cx, abi, _),
|
||||
visit_native_item_pre=bind convert_native(cx, abi, _)
|
||||
with walk::default_visitor());
|
||||
walk::walk_crate(visit, *crate);
|
||||
auto visit = visit::mk_simple_visitor
|
||||
(@rec(visit_item=bind convert(cx, abi, _),
|
||||
visit_native_item=bind convert_native(cx, abi, _)
|
||||
with *visit::default_simple_visitor()));
|
||||
visit::visit_crate(*crate, (), visit);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ import syntax::codemap::codemap;
|
|||
import syntax::codemap::span;
|
||||
import ast::lit;
|
||||
import ast::path;
|
||||
import syntax::walk;
|
||||
import syntax::visit;
|
||||
import std::ioivec::stdout;
|
||||
import std::ioivec::str_writer;
|
||||
import std::ioivec::string_writer;
|
||||
|
@ -98,10 +98,10 @@ fn has_nonlocal_exits(&ast::blk b) -> bool {
|
|||
case (_) { }
|
||||
}
|
||||
}
|
||||
auto v =
|
||||
rec(visit_expr_pre=bind visit_expr(has_exits, _)
|
||||
with walk::default_visitor());
|
||||
walk::walk_block(v, b);
|
||||
auto v = visit::mk_simple_visitor
|
||||
(@rec(visit_expr=bind visit_expr(has_exits, _)
|
||||
with *visit::default_simple_visitor()));
|
||||
visit::visit_block(b, (), v);
|
||||
ret *has_exits;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue