diff options
Diffstat (limited to 'src/libsyntax/visit.rs')
| -rw-r--r-- | src/libsyntax/visit.rs | 187 |
1 files changed, 91 insertions, 96 deletions
diff --git a/src/libsyntax/visit.rs b/src/libsyntax/visit.rs index dad722d2182..48f2e57de1c 100644 --- a/src/libsyntax/visit.rs +++ b/src/libsyntax/visit.rs @@ -13,13 +13,13 @@ import codemap::span; enum vt<E> { mk_vt(visitor<E>), } enum fn_kind { - fk_item_fn(ident, [ty_param]/~), //< an item declared with fn() - fk_method(ident, [ty_param]/~, @method), + fk_item_fn(ident, ~[ty_param]), //< an item declared with fn() + fk_method(ident, ~[ty_param], @method), fk_anon(proto, capture_clause), //< an anonymous function like fn@(...) fk_fn_block(capture_clause), //< a block {||...} - fk_ctor(ident, [ty_param]/~, node_id /* self id */, + fk_ctor(ident, ~[ty_param], node_id /* self id */, def_id /* parent class id */), // class constructor - fk_dtor([ty_param]/~, node_id /* self id */, + fk_dtor(~[ty_param], node_id /* self id */, def_id /* parent class id */) // class destructor } @@ -33,13 +33,13 @@ fn name_of_fn(fk: fn_kind) -> ident { } } -fn tps_of_fn(fk: fn_kind) -> [ty_param]/~ { +fn tps_of_fn(fk: fn_kind) -> ~[ty_param] { alt fk { fk_item_fn(_, tps) | fk_method(_, tps, _) | fk_ctor(_, tps, _, _) | fk_dtor(tps, _, _) { /* FIXME (#2543) */ copy tps } - fk_anon(*) | fk_fn_block(*) { []/~ } + fk_anon(*) | fk_fn_block(*) { ~[] } } } @@ -58,28 +58,28 @@ type visitor<E> = visit_decl: fn@(@decl, E, vt<E>), visit_expr: fn@(@expr, E, vt<E>), visit_ty: fn@(@ty, E, vt<E>), - visit_ty_params: fn@([ty_param]/~, E, vt<E>), + visit_ty_params: fn@(~[ty_param], E, vt<E>), visit_constr: fn@(@path, span, node_id, E, vt<E>), visit_fn: fn@(fn_kind, fn_decl, blk, span, node_id, E, vt<E>), visit_class_item: fn@(@class_member, E, vt<E>)}; fn default_visitor<E>() -> visitor<E> { - ret @{visit_mod: {|a,b,c,d,e|visit_mod::<E>(a, b, c, d, e)}, - visit_view_item: {|a,b,c|visit_view_item::<E>(a, b, c)}, - visit_foreign_item: {|a,b,c|visit_foreign_item::<E>(a, b, c)}, - visit_item: {|a,b,c|visit_item::<E>(a, b, c)}, - visit_local: {|a,b,c|visit_local::<E>(a, b, c)}, - visit_block: {|a,b,c|visit_block::<E>(a, b, c)}, - visit_stmt: {|a,b,c|visit_stmt::<E>(a, b, c)}, - visit_arm: {|a,b,c|visit_arm::<E>(a, b, c)}, - visit_pat: {|a,b,c|visit_pat::<E>(a, b, c)}, - visit_decl: {|a,b,c|visit_decl::<E>(a, b, c)}, - visit_expr: {|a,b,c|visit_expr::<E>(a, b, c)}, - visit_ty: {|a,b,c|skip_ty::<E>(a, b, c)}, - visit_ty_params: {|a,b,c|visit_ty_params::<E>(a, b, c)}, - visit_constr: {|a,b,c,d,e|visit_constr::<E>(a, b, c, d, e)}, - visit_fn: {|a,b,c,d,e,f,g|visit_fn::<E>(a, b, c, d, e, f, g)}, - visit_class_item: {|a,b,c|visit_class_item::<E>(a, b, c)}}; + ret @{visit_mod: |a,b,c,d,e|visit_mod::<E>(a, b, c, d, e), + visit_view_item: |a,b,c|visit_view_item::<E>(a, b, c), + visit_foreign_item: |a,b,c|visit_foreign_item::<E>(a, b, c), + visit_item: |a,b,c|visit_item::<E>(a, b, c), + visit_local: |a,b,c|visit_local::<E>(a, b, c), + visit_block: |a,b,c|visit_block::<E>(a, b, c), + visit_stmt: |a,b,c|visit_stmt::<E>(a, b, c), + visit_arm: |a,b,c|visit_arm::<E>(a, b, c), + visit_pat: |a,b,c|visit_pat::<E>(a, b, c), + visit_decl: |a,b,c|visit_decl::<E>(a, b, c), + visit_expr: |a,b,c|visit_expr::<E>(a, b, c), + visit_ty: |a,b,c|skip_ty::<E>(a, b, c), + visit_ty_params: |a,b,c|visit_ty_params::<E>(a, b, c), + visit_constr: |a,b,c,d,e|visit_constr::<E>(a, b, c, d, e), + visit_fn: |a,b,c,d,e,f,g|visit_fn::<E>(a, b, c, d, e, f, g), + visit_class_item: |a,b,c|visit_class_item::<E>(a, b, c)}; } fn visit_crate<E>(c: crate, e: E, v: vt<E>) { @@ -90,7 +90,7 @@ fn visit_crate_directive<E>(cd: @crate_directive, e: E, v: vt<E>) { alt cd.node { cdir_src_mod(_, _) { } cdir_dir_mod(_, cdirs, _) { - for cdirs.each {|cdir| + for cdirs.each |cdir| { visit_crate_directive(cdir, e, v); } } @@ -100,8 +100,8 @@ fn visit_crate_directive<E>(cd: @crate_directive, e: E, v: vt<E>) { } fn visit_mod<E>(m: _mod, _sp: span, _id: node_id, e: E, v: vt<E>) { - for m.view_items.each {|vi| v.visit_view_item(vi, e, v); } - for m.items.each {|i| v.visit_item(i, e, v); } + for m.view_items.each |vi| { v.visit_view_item(vi, e, v); } + for m.items.each |i| { v.visit_item(i, e, v); } } fn visit_view_item<E>(_vi: @view_item, _e: E, _v: vt<E>) { } @@ -122,8 +122,8 @@ fn visit_item<E>(i: @item, e: E, v: vt<E>) { } item_mod(m) { v.visit_mod(m, i.span, i.id, e, v); } item_foreign_mod(nm) { - for nm.view_items.each {|vi| v.visit_view_item(vi, e, v); } - for nm.items.each {|ni| v.visit_foreign_item(ni, e, v); } + for nm.view_items.each |vi| { v.visit_view_item(vi, e, v); } + for nm.items.each |ni| { v.visit_foreign_item(ni, e, v); } } item_ty(t, tps, rp) { v.visit_ty(t, e, v); @@ -131,34 +131,34 @@ fn visit_item<E>(i: @item, e: E, v: vt<E>) { } item_enum(variants, tps, _) { v.visit_ty_params(tps, e, v); - for variants.each {|vr| - for vr.node.args.each {|va| v.visit_ty(va.ty, e, v); } + for variants.each |vr| { + for vr.node.args.each |va| { v.visit_ty(va.ty, e, v); } } } item_impl(tps, _rp, ifce, ty, methods) { v.visit_ty_params(tps, e, v); - option::iter(ifce, {|p| visit_path(p.path, e, v)}); + option::iter(ifce, |p| visit_path(p.path, e, v)); v.visit_ty(ty, e, v); - for methods.each {|m| + for methods.each |m| { visit_method_helper(m, e, v) } } item_class(tps, ifaces, members, ctor, m_dtor, _) { v.visit_ty_params(tps, e, v); - for members.each {|m| + for members.each |m| { v.visit_class_item(m, e, v); } - for ifaces.each {|p| visit_path(p.path, e, v); } + for ifaces.each |p| { visit_path(p.path, e, v); } visit_class_ctor_helper(ctor, i.ident, tps, ast_util::local_def(i.id), e, v); - option::iter(m_dtor) {|dtor| + do option::iter(m_dtor) |dtor| { visit_class_dtor_helper(dtor, tps, ast_util::local_def(i.id), e, v)}; } item_iface(tps, _rp, methods) { v.visit_ty_params(tps, e, v); - for methods.each {|m| - for m.decl.inputs.each {|a| v.visit_ty(a.ty, e, v); } + for methods.each |m| { + for m.decl.inputs.each |a| { v.visit_ty(a.ty, e, v); } v.visit_ty_params(m.tps, e, v); v.visit_ty(m.decl.output, e, v); } @@ -186,12 +186,12 @@ fn visit_ty<E>(t: @ty, e: E, v: vt<E>) { v.visit_ty(mt.ty, e, v); } ty_rec(flds) { - for flds.each {|f| v.visit_ty(f.node.mt.ty, e, v); } + for flds.each |f| { v.visit_ty(f.node.mt.ty, e, v); } } - ty_tup(ts) { for ts.each {|tt| v.visit_ty(tt, e, v); } } + ty_tup(ts) { for ts.each |tt| { v.visit_ty(tt, e, v); } } ty_fn(_, decl) { - for decl.inputs.each {|a| v.visit_ty(a.ty, e, v); } - for decl.constraints.each {|c| + for decl.inputs.each |a| { v.visit_ty(a.ty, e, v); } + for decl.constraints.each |c| { v.visit_constr(c.node.path, c.span, c.node.id, e, v); } v.visit_ty(decl.output, e, v); @@ -202,7 +202,7 @@ fn visit_ty<E>(t: @ty, e: E, v: vt<E>) { } ty_constr(t, cs) { v.visit_ty(t, e, v); - for cs.each {|tc| + for cs.each |tc| { v.visit_constr(tc.node.path, tc.span, tc.node.id, e, v); } } @@ -220,26 +220,26 @@ fn visit_constr<E>(_operator: @path, _sp: span, _id: node_id, _e: E, } fn visit_path<E>(p: @path, e: E, v: vt<E>) { - for p.types.each {|tp| v.visit_ty(tp, e, v); } + for p.types.each |tp| { v.visit_ty(tp, e, v); } } fn visit_pat<E>(p: @pat, e: E, v: vt<E>) { alt p.node { pat_enum(path, children) { visit_path(path, e, v); - option::iter(children) {|children| - for children.each {|child| v.visit_pat(child, e, v); }} + do option::iter(children) |children| { + for children.each |child| { v.visit_pat(child, e, v); }} } pat_rec(fields, _) { - for fields.each {|f| v.visit_pat(f.pat, e, v); } + for fields.each |f| { v.visit_pat(f.pat, e, v); } } - pat_tup(elts) { for elts.each {|elt| v.visit_pat(elt, e, v); } } + pat_tup(elts) { for elts.each |elt| { v.visit_pat(elt, e, v); } } pat_box(inner) | pat_uniq(inner) { v.visit_pat(inner, e, v); } pat_ident(path, inner) { visit_path(path, e, v); - option::iter(inner) {|subpat| v.visit_pat(subpat, e, v)}; + do option::iter(inner) |subpat| { v.visit_pat(subpat, e, v)}; } pat_lit(ex) { v.visit_expr(ex, e, v); } pat_range(e1, e2) { v.visit_expr(e1, e, v); v.visit_expr(e2, e, v); } @@ -256,9 +256,9 @@ fn visit_foreign_item<E>(ni: @foreign_item, e: E, v: vt<E>) { } } -fn visit_ty_params<E>(tps: [ty_param]/~, e: E, v: vt<E>) { - for tps.each {|tp| - for vec::each(*tp.bounds) {|bound| +fn visit_ty_params<E>(tps: ~[ty_param], e: E, v: vt<E>) { + for tps.each |tp| { + for vec::each(*tp.bounds) |bound| { alt bound { bound_iface(t) { v.visit_ty(t, e, v); } bound_copy | bound_send | bound_const { } @@ -268,8 +268,8 @@ fn visit_ty_params<E>(tps: [ty_param]/~, e: E, v: vt<E>) { } fn visit_fn_decl<E>(fd: fn_decl, e: E, v: vt<E>) { - for fd.inputs.each {|a| v.visit_ty(a.ty, e, v); } - for fd.constraints.each {|c| + for fd.inputs.each |a| { v.visit_ty(a.ty, e, v); } + for fd.constraints.each |c| { v.visit_constr(c.node.path, c.span, c.node.id, e, v); } v.visit_ty(fd.output, e, v); @@ -286,7 +286,7 @@ fn visit_method_helper<E>(m: @method, e: E, v: vt<E>) { } // Similar logic to the comment on visit_method_helper - Tim -fn visit_class_ctor_helper<E>(ctor: class_ctor, nm: ident, tps: [ty_param]/~, +fn visit_class_ctor_helper<E>(ctor: class_ctor, nm: ident, tps: ~[ty_param], parent_id: def_id, e: E, v: vt<E>) { v.visit_fn(fk_ctor(/* FIXME (#2543) */ copy nm, /* FIXME (#2543) */ copy tps, @@ -295,7 +295,7 @@ fn visit_class_ctor_helper<E>(ctor: class_ctor, nm: ident, tps: [ty_param]/~, } -fn visit_class_dtor_helper<E>(dtor: class_dtor, tps: [ty_param]/~, +fn visit_class_dtor_helper<E>(dtor: class_dtor, tps: ~[ty_param], parent_id: def_id, e: E, v: vt<E>) { v.visit_fn(fk_dtor(/* FIXME (#2543) */ copy tps, dtor.node.self_id, parent_id), ast_util::dtor_dec(), @@ -311,8 +311,8 @@ fn visit_fn<E>(fk: fn_kind, decl: fn_decl, body: blk, _sp: span, } fn visit_block<E>(b: ast::blk, e: E, v: vt<E>) { - for b.node.view_items.each {|vi| v.visit_view_item(vi, e, v); } - for b.node.stmts.each {|s| v.visit_stmt(s, e, v); } + for b.node.view_items.each |vi| { v.visit_view_item(vi, e, v); } + for b.node.stmts.each |s| { v.visit_stmt(s, e, v); } visit_expr_opt(b.node.expr, e, v); } @@ -327,7 +327,7 @@ fn visit_stmt<E>(s: @stmt, e: E, v: vt<E>) { fn visit_decl<E>(d: @decl, e: E, v: vt<E>) { alt d.node { decl_local(locs) { - for locs.each {|loc| v.visit_local(loc, e, v); } + for locs.each |loc| { v.visit_local(loc, e, v); } } decl_item(it) { v.visit_item(it, e, v); } } @@ -337,14 +337,14 @@ fn visit_expr_opt<E>(eo: option<@expr>, e: E, v: vt<E>) { alt eo { none { } some(ex) { v.visit_expr(ex, e, v); } } } -fn visit_exprs<E>(exprs: [@expr]/~, e: E, v: vt<E>) { - for exprs.each {|ex| v.visit_expr(ex, e, v); } +fn visit_exprs<E>(exprs: ~[@expr], e: E, v: vt<E>) { + for exprs.each |ex| { v.visit_expr(ex, e, v); } } fn visit_mac<E>(m: mac, e: E, v: vt<E>) { alt m.node { ast::mac_invoc(pth, arg, body) { - option::map(arg) {|arg| v.visit_expr(arg, e, v)}; } + option::map(arg, |arg| v.visit_expr(arg, e, v)); } ast::mac_invoc_tt(pth, tt) { /* no user-serviceable parts inside */ } ast::mac_embed_type(ty) { v.visit_ty(ty, e, v); } ast::mac_embed_block(blk) { v.visit_block(blk, e, v); } @@ -363,10 +363,10 @@ fn visit_expr<E>(ex: @expr, e: E, v: vt<E>) { expr_vstore(x, _) { v.visit_expr(x, e, v); } expr_vec(es, _) { visit_exprs(es, e, v); } expr_rec(flds, base) { - for flds.each {|f| v.visit_expr(f.node.expr, e, v); } + for flds.each |f| { v.visit_expr(f.node.expr, e, v); } visit_expr_opt(base, e, v); } - expr_tup(elts) { for elts.each {|el| v.visit_expr(el, e, v); } } + expr_tup(elts) { for elts.each |el| { v.visit_expr(el, e, v); } } expr_call(callee, args, _) { visit_exprs(args, e, v); v.visit_expr(callee, e, v); @@ -393,7 +393,7 @@ fn visit_expr<E>(ex: @expr, e: E, v: vt<E>) { expr_loop(b) { v.visit_block(b, e, v); } expr_alt(x, arms, _) { v.visit_expr(x, e, v); - for arms.each {|a| v.visit_arm(a, e, v); } + for arms.each |a| { v.visit_arm(a, e, v); } } expr_fn(proto, decl, body, cap_clause) { v.visit_fn(fk_anon(proto, cap_clause), decl, body, @@ -414,7 +414,7 @@ fn visit_expr<E>(ex: @expr, e: E, v: vt<E>) { } expr_field(x, _, tys) { v.visit_expr(x, e, v); - for tys.each {|tp| v.visit_ty(tp, e, v); } + for tys.each |tp| { v.visit_ty(tp, e, v); } } expr_index(a, b) { v.visit_expr(a, e, v); v.visit_expr(b, e, v); } expr_path(p) { visit_path(p, e, v); } @@ -431,7 +431,7 @@ fn visit_expr<E>(ex: @expr, e: E, v: vt<E>) { } fn visit_arm<E>(a: arm, e: E, v: vt<E>) { - for a.pats.each {|p| v.visit_pat(p, e, v); } + for a.pats.each |p| { v.visit_pat(p, e, v); } visit_expr_opt(a.guard, e, v); v.visit_block(a.body, e, v); } @@ -454,7 +454,7 @@ type simple_visitor = visit_decl: fn@(@decl), visit_expr: fn@(@expr), visit_ty: fn@(@ty), - visit_ty_params: fn@([ty_param]/~), + visit_ty_params: fn@(~[ty_param]), visit_constr: fn@(@path, span, node_id), visit_fn: fn@(fn_kind, fn_decl, blk, span, node_id), visit_class_item: fn@(@class_member)}; @@ -474,7 +474,7 @@ fn default_simple_visitor() -> simple_visitor { visit_decl: fn@(_d: @decl) { }, visit_expr: fn@(_e: @expr) { }, visit_ty: simple_ignore_ty, - visit_ty_params: fn@(_ps: [ty_param]/~) {}, + visit_ty_params: fn@(_ps: ~[ty_param]) {}, visit_constr: fn@(_p: @path, _sp: span, _id: node_id) { }, visit_fn: fn@(_fk: fn_kind, _d: fn_decl, _b: blk, _sp: span, _id: node_id) { }, @@ -533,8 +533,8 @@ fn mk_simple_visitor(v: simple_visitor) -> vt<()> { f(ty); visit_ty(ty, e, v); } - fn v_ty_params(f: fn@([ty_param]/~), - ps: [ty_param]/~, + fn v_ty_params(f: fn@(~[ty_param]), + ps: ~[ty_param], &&e: (), v: vt<()>) { f(ps); visit_ty_params(ps, e, v); @@ -551,9 +551,9 @@ fn mk_simple_visitor(v: simple_visitor) -> vt<()> { visit_fn(fk, decl, body, sp, id, e, v); } let visit_ty = if v.visit_ty == simple_ignore_ty { - {|a,b,c| skip_ty(a, b, c)} + |a,b,c| skip_ty(a, b, c) } else { - {|a,b,c| v_ty(v.visit_ty, a, b, c)} + |a,b,c| v_ty(v.visit_ty, a, b, c) }; fn v_class_item(f: fn@(@class_member), cm: @class_member, &&e: (), @@ -561,33 +561,28 @@ fn mk_simple_visitor(v: simple_visitor) -> vt<()> { f(cm); visit_class_item(cm, e, v); } - ret mk_vt(@{visit_mod: {|a,b,c,d,e|v_mod(v.visit_mod, a, b, c, d, e)}, - visit_view_item: {|a,b,c| - v_view_item(v.visit_view_item, a, b, c) - }, + ret mk_vt(@{visit_mod: |a,b,c,d,e|v_mod(v.visit_mod, a, b, c, d, e), + visit_view_item: |a,b,c| + v_view_item(v.visit_view_item, a, b, c), visit_foreign_item: - {|a,b,c|v_foreign_item(v.visit_foreign_item, a, b, c)}, - visit_item: {|a,b,c|v_item(v.visit_item, a, b, c)}, - visit_local: {|a,b,c|v_local(v.visit_local, a, b, c)}, - visit_block: {|a,b,c|v_block(v.visit_block, a, b, c)}, - visit_stmt: {|a,b,c|v_stmt(v.visit_stmt, a, b, c)}, - visit_arm: {|a,b,c|v_arm(v.visit_arm, a, b, c)}, - visit_pat: {|a,b,c|v_pat(v.visit_pat, a, b, c)}, - visit_decl: {|a,b,c|v_decl(v.visit_decl, a, b, c)}, - visit_expr: {|a,b,c|v_expr(v.visit_expr, a, b, c)}, + |a,b,c|v_foreign_item(v.visit_foreign_item, a, b, c), + visit_item: |a,b,c|v_item(v.visit_item, a, b, c), + visit_local: |a,b,c|v_local(v.visit_local, a, b, c), + visit_block: |a,b,c|v_block(v.visit_block, a, b, c), + visit_stmt: |a,b,c|v_stmt(v.visit_stmt, a, b, c), + visit_arm: |a,b,c|v_arm(v.visit_arm, a, b, c), + visit_pat: |a,b,c|v_pat(v.visit_pat, a, b, c), + visit_decl: |a,b,c|v_decl(v.visit_decl, a, b, c), + visit_expr: |a,b,c|v_expr(v.visit_expr, a, b, c), visit_ty: visit_ty, - visit_ty_params: {|a,b,c| - v_ty_params(v.visit_ty_params, a, b, c) - }, - visit_constr: {|a,b,c,d,e| - v_constr(v.visit_constr, a, b, c, d, e) - }, - visit_fn: {|a,b,c,d,e,f,g| - v_fn(v.visit_fn, a, b, c, d, e, f, g) - }, - visit_class_item: {|a,b,c| + visit_ty_params: |a,b,c| + v_ty_params(v.visit_ty_params, a, b, c), + visit_constr: |a,b,c,d,e| + v_constr(v.visit_constr, a, b, c, d, e), + visit_fn: |a,b,c,d,e,f,g| + v_fn(v.visit_fn, a, b, c, d, e, f, g), + visit_class_item: |a,b,c| v_class_item(v.visit_class_item, a, b, c) - } }); } |
