diff --git a/src/comp/middle/alias.rs b/src/comp/middle/alias.rs index ade60d68c999..87ad6096d33b 100644 --- a/src/comp/middle/alias.rs +++ b/src/comp/middle/alias.rs @@ -1,6 +1,7 @@ import front::ast; import front::ast::ident; +import front::ast::fn_ident; import front::ast::node_id; import front::ast::def_id; import util::common::span; @@ -53,7 +54,7 @@ fn check_crate(@ty::ctxt tcx, &@ast::crate crate) { } fn visit_fn(@ctx cx, &ast::_fn f, &vec[ast::ty_param] tp, &span sp, - &ident name, ast::node_id id, &scope sc, &vt[scope] v) { + &fn_ident name, ast::node_id id, &scope sc, &vt[scope] v) { visit::visit_fn_decl(f.decl, sc, v); for (ast::arg arg_ in f.decl.inputs) { cx.local_map.insert(arg_.id, arg(arg_.mode)); diff --git a/src/comp/middle/resolve.rs b/src/comp/middle/resolve.rs index 9b94be9f7d4b..eb7d3d4dd824 100644 --- a/src/comp/middle/resolve.rs +++ b/src/comp/middle/resolve.rs @@ -1,6 +1,7 @@ import front::ast; import front::ast::ident; +import front::ast::fn_ident; import front::ast::def; import front::ast::def_id; import front::ast::node_id; @@ -344,7 +345,7 @@ fn visit_native_item_with_scope(&@ast::native_item ni, &scopes sc, } fn visit_fn_with_scope(&@env e, &ast::_fn f, &vec[ast::ty_param] tp, &span sp, - &ident name, node_id id, &scopes sc, + &fn_ident name, node_id id, &scopes sc, &vt[scopes] v) { // here's where we need to set up the mapping // for f's constrs in the table. diff --git a/src/comp/middle/visit.rs b/src/comp/middle/visit.rs index fccfd05d67b2..b6a96453d1ba 100644 --- a/src/comp/middle/visit.rs +++ b/src/comp/middle/visit.rs @@ -34,7 +34,7 @@ type visitor[E] = fn(&@expr, &E, &vt[E]) visit_expr, fn(&@ty, &E, &vt[E]) visit_ty, fn(&@constr, &E, &vt[E]) visit_constr, - fn(&_fn, &vec[ty_param], &span, &ident, node_id, &E, &vt[E]) + fn(&_fn, &vec[ty_param], &span, &fn_ident, node_id, &E, &vt[E]) visit_fn); fn default_visitor[E]() -> visitor[E] { @@ -103,7 +103,7 @@ fn visit_item[E](&@item i, &E e, &vt[E] v) { vt(v).visit_expr(ex, e, v); } case (item_fn(?f, ?tp)) { - vt(v).visit_fn(f, tp, i.span, i.ident, i.id, e, v); + vt(v).visit_fn(f, tp, i.span, some(i.ident), i.id, e, v); } case (item_mod(?m)) { vt(v).visit_mod(m, i.span, e, v); } case (item_native_mod(?nm)) { @@ -116,7 +116,7 @@ fn visit_item[E](&@item i, &E e, &vt[E] v) { } case (item_ty(?t, _)) { vt(v).visit_ty(t, e, v); } case (item_res(?f, ?dtor_id, ?tps, _)) { - vt(v).visit_fn(f, tps, i.span, i.ident, dtor_id, e, v); + vt(v).visit_fn(f, tps, i.span, some(i.ident), dtor_id, e, v); } case (item_tag(?variants, _)) { for (variant vr in variants) { @@ -128,13 +128,13 @@ fn visit_item[E](&@item i, &E e, &vt[E] v) { case (item_obj(?ob, _, _)) { for (obj_field f in ob.fields) { vt(v).visit_ty(f.ty, e, v); } for (@method m in ob.methods) { - vt(v).visit_fn(m.node.meth, [], m.span, m.node.ident, + vt(v).visit_fn(m.node.meth, [], m.span, some(m.node.ident), m.node.id, e, v); } alt (ob.dtor) { case (none) { } case (some(?m)) { - vt(v).visit_fn(m.node.meth, [], m.span, m.node.ident, + vt(v).visit_fn(m.node.meth, [], m.span, some(m.node.ident), m.node.id, e, v); } } @@ -216,7 +216,7 @@ fn visit_fn_decl[E](&fn_decl fd, &E e, &vt[E] v) { vt(v).visit_ty(fd.output, e, v); } -fn visit_fn[E](&_fn f, &vec[ty_param] tp, &span sp, &ident i, +fn visit_fn[E](&_fn f, &vec[ty_param] tp, &span sp, &fn_ident i, node_id id, &E e, &vt[E] v) { visit_fn_decl(f.decl, e, v); vt(v).visit_block(f.body, e, v); @@ -326,8 +326,7 @@ fn visit_expr[E](&@expr ex, &E e, &vt[E] v) { for (arm a in arms) { vt(v).visit_arm(a, e, v); } } case (expr_fn(?f)) { - visit_fn_decl(f.decl, e, v); - vt(v).visit_block(f.body, e, v); + vt(v).visit_fn(f, [], ex.span, none, ex.id, e, v); } case (expr_block(?b)) { vt(v).visit_block(b, e, v); } case (expr_assign(?a, ?b)) { @@ -391,7 +390,7 @@ fn visit_expr[E](&@expr ex, &E e, &vt[E] v) { case (some(?ex)) { vt(v).visit_expr(ex, e, v); } } for (@method m in anon_obj.methods) { - vt(v).visit_fn(m.node.meth, [], m.span, m.node.ident, + vt(v).visit_fn(m.node.meth, [], m.span, some(m.node.ident), m.node.id, e, v); } }