diff options
| author | Michael Sullivan <sully@msully.net> | 2011-06-29 19:04:34 -0700 |
|---|---|---|
| committer | Michael Sullivan <sully@msully.net> | 2011-07-14 19:18:56 -0500 |
| commit | e9a6fc94d5cd17fee6ec9b7cd232cb5475f84dac (patch) | |
| tree | ec2e807b637a3fefde0ab5e5d8613a6536ebebea /src | |
| parent | a3301f74f90e75415fc93a8eb55fd5aa92c6905a (diff) | |
| download | rust-e9a6fc94d5cd17fee6ec9b7cd232cb5475f84dac.tar.gz rust-e9a6fc94d5cd17fee6ec9b7cd232cb5475f84dac.zip | |
Make collect_upvars know about function args.
Closes #697.
Diffstat (limited to 'src')
| -rw-r--r-- | src/comp/middle/trans.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index fc47fad6c96..2b8f64bf390 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -4086,6 +4086,10 @@ fn collect_upvars(&@block_ctxt cx, &fn (&walk::ast_visitor) walker, resolve::def_map def_map, session::session sess); + fn walk_fn(env e, &ast::_fn f, &ast::ty_param[] tps, &span sp, + &ast::fn_ident i, ast::node_id nid) { + for (ast::arg a in f.decl.inputs) { e.decls.insert(a.id, ()); } + } fn walk_expr(env e, &@ast::expr expr) { alt (expr.node) { case (ast::expr_path(?path)) { @@ -4123,7 +4127,8 @@ fn collect_upvars(&@block_ctxt cx, &fn (&walk::ast_visitor) walker, def_map=cx.fcx.lcx.ccx.tcx.def_map, sess=cx.fcx.lcx.ccx.tcx.sess); auto visitor = - @rec(visit_local_pre=bind walk_local(e, _), + @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()); |
