Simple cleanup of the freevars pass.

This commit is contained in:
Michael Sullivan
2011-07-22 16:39:13 -07:00
parent f2f8943a85
commit 2bf50114eb

View File

@@ -34,7 +34,7 @@ fn collect_freevars(&resolve::def_map def_map, &session::session sess,
ast::node_id[] initial_decls) -> freevar_set { ast::node_id[] initial_decls) -> freevar_set {
type env = type env =
@rec(mutable ast::node_id[] refs, @rec(mutable ast::node_id[] refs,
hashmap[ast::node_id, ()] decls, hashset[ast::node_id] decls,
resolve::def_map def_map, resolve::def_map def_map,
session::session sess); session::session sess);
@@ -60,18 +60,18 @@ fn collect_freevars(&resolve::def_map def_map, &session::session sess,
} }
} }
fn walk_local(env e, &@ast::local local) { fn walk_local(env e, &@ast::local local) {
e.decls.insert(local.node.id, ()); set_add(e.decls, local.node.id);
} }
fn walk_pat(env e, &@ast::pat p) { fn walk_pat(env e, &@ast::pat p) {
alt (p.node) { alt (p.node) {
case (ast::pat_bind(_)) { case (ast::pat_bind(_)) {
e.decls.insert(p.id, ()); set_add(e.decls, p.id);
} }
case (_) {} case (_) {}
} }
} }
let hashmap[ast::node_id, ()] decls = new_int_hash[()](); let hashset[ast::node_id] decls = new_int_hash();
for (ast::node_id decl in initial_decls) { decls.insert(decl, ()); } for (ast::node_id decl in initial_decls) { set_add(decls, decl); }
let env e = let env e =
@rec(mutable refs=~[], @rec(mutable refs=~[],