about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2011-07-31 12:24:14 +0200
committerMarijn Haverbeke <marijnh@gmail.com>2011-07-31 12:24:14 +0200
commit48ec25da423cd6535e6354a00fa6c98f3f2b4065 (patch)
tree977adb9834c20a981af4661b2731833a9f2b2af6
parentc7ef6d28660140b60691dc4a72fbef42216e1ae9 (diff)
downloadrust-48ec25da423cd6535e6354a00fa6c98f3f2b4065.tar.gz
rust-48ec25da423cd6535e6354a00fa6c98f3f2b4065.zip
Get rid of walk.rs
And we're down to a single AST walker again
-rw-r--r--src/comp/rustc.rc1
-rw-r--r--src/comp/syntax/walk.rs462
2 files changed, 0 insertions, 463 deletions
diff --git a/src/comp/rustc.rc b/src/comp/rustc.rc
index da6f7e5c853..fbf4503eef3 100644
--- a/src/comp/rustc.rc
+++ b/src/comp/rustc.rc
@@ -47,7 +47,6 @@ mod middle {
 mod syntax {
     mod ast;
     mod fold;
-    mod walk;
     mod visit;
     mod codemap;
     mod parse {
diff --git a/src/comp/syntax/walk.rs b/src/comp/syntax/walk.rs
deleted file mode 100644
index c0edb95009e..00000000000
--- a/src/comp/syntax/walk.rs
+++ /dev/null
@@ -1,462 +0,0 @@
-
-import ast;
-import ast::ty_param;
-import ast::respan;
-import std::option;
-import std::option::some;
-import std::option::none;
-import codemap::span;
-
-type ast_visitor =
-    {keep_going: fn() -> bool ,
-     want_crate_directives: fn() -> bool ,
-     visit_crate_pre: fn(&ast::crate) ,
-     visit_crate_post: fn(&ast::crate) ,
-     visit_crate_directive_pre: fn(&@ast::crate_directive) ,
-     visit_crate_directive_post: fn(&@ast::crate_directive) ,
-     visit_view_item_pre: fn(&@ast::view_item) ,
-     visit_view_item_post: fn(&@ast::view_item) ,
-     visit_native_item_pre: fn(&@ast::native_item) ,
-     visit_native_item_post: fn(&@ast::native_item) ,
-     visit_item_pre: fn(&@ast::item) ,
-     visit_item_post: fn(&@ast::item) ,
-     visit_method_pre: fn(&@ast::method) ,
-     visit_method_post: fn(&@ast::method) ,
-     visit_block_pre: fn(&ast::blk) ,
-     visit_block_post: fn(&ast::blk) ,
-     visit_stmt_pre: fn(&@ast::stmt) ,
-     visit_stmt_post: fn(&@ast::stmt) ,
-     visit_arm_pre: fn(&ast::arm) ,
-     visit_arm_post: fn(&ast::arm) ,
-     visit_pat_pre: fn(&@ast::pat) ,
-     visit_pat_post: fn(&@ast::pat) ,
-     visit_decl_pre: fn(&@ast::decl) ,
-     visit_decl_post: fn(&@ast::decl) ,
-     visit_local_pre: fn(&@ast::local) ,
-     visit_local_post: fn(&@ast::local) ,
-     visit_expr_pre: fn(&@ast::expr) ,
-     visit_expr_post: fn(&@ast::expr) ,
-     visit_ty_pre: fn(&@ast::ty) ,
-     visit_ty_post: fn(&@ast::ty) ,
-     visit_constr: fn(&@ast::constr) ,
-     visit_fn_pre:
-         fn(&ast::_fn, &ast::ty_param[], &span, &ast::fn_ident, ast::node_id)
-             ,
-     visit_fn_post:
-         fn(&ast::_fn, &ast::ty_param[], &span, &ast::fn_ident, ast::node_id)
-             };
-
-fn walk_crate(v: &ast_visitor, c: &ast::crate) {
-    if !v.keep_going() { ret; }
-    v.visit_crate_pre(c);
-    walk_mod(v, c.node.module);
-    v.visit_crate_post(c);
-}
-
-fn walk_crate_directive(v: &ast_visitor, cd: @ast::crate_directive) {
-    if !v.keep_going() { ret; }
-    if !v.want_crate_directives() { ret; }
-    v.visit_crate_directive_pre(cd);
-    alt cd.node {
-      ast::cdir_src_mod(_, _, _) { }
-      ast::cdir_dir_mod(_, _, cdirs, _) {
-        for cdir: @ast::crate_directive  in cdirs {
-            walk_crate_directive(v, cdir);
-        }
-      }
-      ast::cdir_view_item(vi) { walk_view_item(v, vi); }
-      ast::cdir_syntax(_) { }
-      ast::cdir_auth(_, _) { }
-    }
-    v.visit_crate_directive_post(cd);
-}
-
-fn walk_mod(v: &ast_visitor, m: &ast::_mod) {
-    if !v.keep_going() { ret; }
-    for vi: @ast::view_item  in m.view_items { walk_view_item(v, vi); }
-    for i: @ast::item  in m.items { walk_item(v, i); }
-}
-
-fn walk_view_item(v: &ast_visitor, vi: @ast::view_item) {
-    if !v.keep_going() { ret; }
-    v.visit_view_item_pre(vi);
-    v.visit_view_item_post(vi);
-}
-
-fn walk_local(v: &ast_visitor, loc: @ast::local) {
-    v.visit_local_pre(loc);
-    alt loc.node.ty { none. { } some(t) { walk_ty(v, t); } }
-    alt loc.node.init { none. { } some(i) { walk_expr(v, i.expr); } }
-    v.visit_local_post(loc);
-}
-
-fn walk_item(v: &ast_visitor, i: @ast::item) {
-    if !v.keep_going() { ret; }
-    v.visit_item_pre(i);
-    alt i.node {
-      ast::item_const(t, e) { walk_ty(v, t); walk_expr(v, e); }
-      ast::item_fn(f, tps) {
-        walk_fn(v, f, tps, i.span, some(i.ident), i.id);
-      }
-      ast::item_mod(m) { walk_mod(v, m); }
-      ast::item_native_mod(nm) { walk_native_mod(v, nm); }
-      ast::item_ty(t, _) { walk_ty(v, t); }
-      ast::item_res(f, dtor_id, tps, _) {
-        walk_fn(v, f, tps, i.span, some(i.ident), dtor_id);
-      }
-      ast::item_tag(variants, _) {
-        for vr: ast::variant  in variants {
-            for va: ast::variant_arg  in vr.node.args { walk_ty(v, va.ty); }
-        }
-      }
-      ast::item_obj(ob, _, _) {
-        for f: ast::obj_field  in ob.fields { walk_ty(v, f.ty); }
-        for m: @ast::method  in ob.methods {
-            v.visit_method_pre(m);
-            // Methods don't have ty params?
-            walk_fn(v, m.node.meth, ~[], m.span, some(m.node.ident),
-                    m.node.id);
-            v.visit_method_post(m);
-        }
-      }
-    }
-    v.visit_item_post(i);
-}
-
-fn walk_ty(v: &ast_visitor, t: @ast::ty) {
-    if !v.keep_going() { ret; }
-    v.visit_ty_pre(t);
-    alt t.node {
-      ast::ty_nil. { }
-      ast::ty_bot. { }
-      ast::ty_bool. { }
-      ast::ty_int. { }
-      ast::ty_uint. { }
-      ast::ty_float. { }
-      ast::ty_machine(_) { }
-      ast::ty_char. { }
-      ast::ty_str. { }
-      ast::ty_istr. { }
-      ast::ty_box(mt) { walk_ty(v, mt.ty); }
-      ast::ty_vec(mt) { walk_ty(v, mt.ty); }
-      ast::ty_ivec(mt) { walk_ty(v, mt.ty); }
-      ast::ty_ptr(mt) { walk_ty(v, mt.ty); }
-      ast::ty_task. { }
-      ast::ty_port(t) { walk_ty(v, t); }
-      ast::ty_chan(t) { walk_ty(v, t); }
-      ast::ty_rec(flds) {
-        for f: ast::ty_field  in flds { walk_ty(v, f.node.mt.ty); }
-      }
-      ast::ty_fn(_, args, out, _, constrs) {
-        for a: ast::ty_arg  in args { walk_ty(v, a.node.ty); }
-        for c: @ast::constr  in constrs { v.visit_constr(c); }
-        walk_ty(v, out);
-      }
-      ast::ty_obj(tmeths) {
-        for m: ast::ty_method  in tmeths {
-            for a: ast::ty_arg  in m.node.inputs { walk_ty(v, a.node.ty); }
-            walk_ty(v, m.node.output);
-        }
-      }
-      ast::ty_path(p, _) {
-        for tp: @ast::ty  in p.node.types { walk_ty(v, tp); }
-      }
-      ast::ty_type. { }
-      ast::ty_constr(t, _) { walk_ty(v, t); }
-    }
-    v.visit_ty_post(t);
-}
-
-fn walk_pat(v: &ast_visitor, p: &@ast::pat) {
-    v.visit_pat_pre(p);
-    alt p.node {
-      ast::pat_tag(path, children) {
-        for tp: @ast::ty  in path.node.types { walk_ty(v, tp); }
-        for child: @ast::pat  in children { walk_pat(v, child); }
-      }
-      ast::pat_rec(fields, _) {
-        for f: ast::field_pat  in fields { walk_pat(v, f.pat); }
-      }
-      ast::pat_box(inner) { walk_pat(v, inner); }
-      _ { }
-    }
-    v.visit_pat_post(p);
-}
-
-fn walk_native_mod(v: &ast_visitor, nm: &ast::native_mod) {
-    if !v.keep_going() { ret; }
-    for vi: @ast::view_item  in nm.view_items { walk_view_item(v, vi); }
-    for ni: @ast::native_item  in nm.items { walk_native_item(v, ni); }
-}
-
-fn walk_native_item(v: &ast_visitor, ni: @ast::native_item) {
-    if !v.keep_going() { ret; }
-    v.visit_native_item_pre(ni);
-    alt ni.node {
-      ast::native_item_fn(_, fd, _) { walk_fn_decl(v, fd); }
-      ast::native_item_ty. { }
-    }
-    v.visit_native_item_post(ni);
-}
-
-fn walk_fn_decl(v: &ast_visitor, fd: &ast::fn_decl) {
-    for a: ast::arg  in fd.inputs { walk_ty(v, a.ty); }
-    for c: @ast::constr  in fd.constraints { v.visit_constr(c); }
-    walk_ty(v, fd.output);
-}
-
-fn walk_fn(v: &ast_visitor, f: &ast::_fn, tps: &ast::ty_param[], sp: &span,
-           i: &ast::fn_ident, d: ast::node_id) {
-    if !v.keep_going() { ret; }
-    v.visit_fn_pre(f, tps, sp, i, d);
-    walk_fn_decl(v, f.decl);
-    walk_block(v, f.body);
-    v.visit_fn_post(f, tps, sp, i, d);
-}
-
-fn walk_block(v: &ast_visitor, b: &ast::blk) {
-    if !v.keep_going() { ret; }
-    v.visit_block_pre(b);
-    for s: @ast::stmt  in b.node.stmts { walk_stmt(v, s); }
-    walk_expr_opt(v, b.node.expr);
-    v.visit_block_post(b);
-}
-
-fn walk_stmt(v: &ast_visitor, s: @ast::stmt) {
-    if !v.keep_going() { ret; }
-    v.visit_stmt_pre(s);
-    alt s.node {
-      ast::stmt_decl(d, _) { walk_decl(v, d); }
-      ast::stmt_expr(e, _) { walk_expr(v, e); }
-      ast::stmt_crate_directive(cdir) { walk_crate_directive(v, cdir); }
-    }
-    v.visit_stmt_post(s);
-}
-
-fn walk_decl(v: &ast_visitor, d: @ast::decl) {
-    if !v.keep_going() { ret; }
-    v.visit_decl_pre(d);
-    alt d.node {
-      ast::decl_local(locs) {
-        for loc: @ast::local  in locs { walk_local(v, loc); }
-      }
-      ast::decl_item(it) { walk_item(v, it); }
-    }
-    v.visit_decl_post(d);
-}
-
-fn walk_expr_opt(v: &ast_visitor, eo: option::t[@ast::expr]) {
-    alt eo { none. { } some(e) { walk_expr(v, e); } }
-}
-
-fn walk_exprs(v: &ast_visitor, exprs: &(@ast::expr)[]) {
-    for e: @ast::expr  in exprs { walk_expr(v, e); }
-}
-
-fn walk_mac(v: &ast_visitor, mac: ast::mac) {
-    alt mac.node {
-      ast::mac_invoc(pth, arg, body) { walk_expr(v, arg); }
-      ast::mac_embed_type(ty) { walk_ty(v, ty); }
-      ast::mac_embed_block(blk) { walk_block(v, blk); }
-      ast::mac_ellipsis. { }
-    }
-}
-
-fn walk_expr(v: &ast_visitor, e: @ast::expr) {
-    if !v.keep_going() { ret; }
-    v.visit_expr_pre(e);
-    alt e.node {
-      ast::expr_vec(es, _, _) { walk_exprs(v, es); }
-      ast::expr_rec(flds, base) {
-        for f: ast::field  in flds { walk_expr(v, f.node.expr); }
-        walk_expr_opt(v, base);
-      }
-      ast::expr_call(callee, args) {
-        walk_expr(v, callee);
-        walk_exprs(v, args);
-      }
-      ast::expr_self_method(_) { }
-      ast::expr_bind(callee, args) {
-        walk_expr(v, callee);
-        for eo: option::t[@ast::expr]  in args { walk_expr_opt(v, eo); }
-      }
-      ast::expr_spawn(_, _, callee, args) {
-        walk_expr(v, callee);
-        walk_exprs(v, args);
-      }
-      ast::expr_binary(_, a, b) { walk_expr(v, a); walk_expr(v, b); }
-      ast::expr_unary(_, a) { walk_expr(v, a); }
-      ast::expr_lit(_) { }
-      ast::expr_cast(x, t) { walk_expr(v, x); walk_ty(v, t); }
-      ast::expr_if(x, b, eo) {
-        walk_expr(v, x);
-        walk_block(v, b);
-        walk_expr_opt(v, eo);
-      }
-      ast::expr_if_check(x, b, eo) {
-        walk_expr(v, x);
-        walk_block(v, b);
-        walk_expr_opt(v, eo);
-      }
-      ast::expr_ternary(c, t, e) {
-        walk_expr(v, c);
-        walk_expr(v, t);
-        walk_expr(v, e);
-      }
-      ast::expr_while(x, b) { walk_expr(v, x); walk_block(v, b); }
-      ast::expr_for(dcl, x, b) {
-        walk_local(v, dcl);
-        walk_expr(v, x);
-        walk_block(v, b);
-      }
-      ast::expr_for_each(dcl, x, b) {
-        walk_local(v, dcl);
-        walk_expr(v, x);
-        walk_block(v, b);
-      }
-      ast::expr_do_while(b, x) { walk_block(v, b); walk_expr(v, x); }
-      ast::expr_alt(x, arms) {
-        walk_expr(v, x);
-        for a: ast::arm  in arms {
-            for p: @ast::pat  in a.pats { walk_pat(v, p); }
-            v.visit_arm_pre(a);
-            walk_block(v, a.block);
-            v.visit_arm_post(a);
-        }
-      }
-      ast::expr_fn(f) { walk_fn(v, f, ~[], e.span, none, e.id); }
-      ast::expr_block(b) { walk_block(v, b); }
-      ast::expr_assign(a, b) { walk_expr(v, a); walk_expr(v, b); }
-      ast::expr_move(a, b) { walk_expr(v, a); walk_expr(v, b); }
-      ast::expr_swap(a, b) { walk_expr(v, a); walk_expr(v, b); }
-      ast::expr_assign_op(_, a, b) { walk_expr(v, a); walk_expr(v, b); }
-      ast::expr_send(a, b) { walk_expr(v, a); walk_expr(v, b); }
-      ast::expr_recv(a, b) { walk_expr(v, a); walk_expr(v, b); }
-      ast::expr_field(x, _) { walk_expr(v, x); }
-      ast::expr_index(a, b) { walk_expr(v, a); walk_expr(v, b); }
-      ast::expr_path(p) {
-        for tp: @ast::ty  in p.node.types { walk_ty(v, tp); }
-      }
-      ast::expr_fail(eo) { walk_expr_opt(v, eo); }
-      ast::expr_break. { }
-      ast::expr_cont. { }
-      ast::expr_ret(eo) { walk_expr_opt(v, eo); }
-      ast::expr_put(eo) { walk_expr_opt(v, eo); }
-      ast::expr_be(x) { walk_expr(v, x); }
-      ast::expr_log(_, x) { walk_expr(v, x); }
-      ast::expr_check(_, x) { walk_expr(v, x); }
-      ast::expr_assert(x) { walk_expr(v, x); }
-      ast::expr_port(_) { }
-      ast::expr_chan(x) { walk_expr(v, x); }
-      ast::expr_anon_obj(anon_obj) {
-
-        // Fields
-        alt anon_obj.fields {
-          none. { }
-          some(fields) {
-            for f: ast::anon_obj_field  in fields {
-                walk_ty(v, f.ty);
-                walk_expr(v, f.expr);
-            }
-          }
-        }
-
-        // inner_obj
-        alt anon_obj.inner_obj { none. { } some(e) { walk_expr(v, e); } }
-
-        // Methods
-        for m: @ast::method  in anon_obj.methods {
-            v.visit_method_pre(m);
-            walk_fn(v, m.node.meth, ~[], m.span, some(m.node.ident),
-                    m.node.id);
-            v.visit_method_post(m);
-        }
-      }
-      ast::expr_mac(mac) { walk_mac(v, mac); }
-    }
-    v.visit_expr_post(e);
-}
-
-fn def_keep_going() -> bool { ret true; }
-
-fn def_want_crate_directives() -> bool { ret false; }
-
-fn def_visit_crate(c: &ast::crate) { }
-
-fn def_visit_crate_directive(c: &@ast::crate_directive) { }
-
-fn def_visit_view_item(vi: &@ast::view_item) { }
-
-fn def_visit_native_item(ni: &@ast::native_item) { }
-
-fn def_visit_item(i: &@ast::item) { }
-
-fn def_visit_method(m: &@ast::method) { }
-
-fn def_visit_block(b: &ast::blk) { }
-
-fn def_visit_stmt(s: &@ast::stmt) { }
-
-fn def_visit_arm(a: &ast::arm) { }
-
-fn def_visit_pat(p: &@ast::pat) { }
-
-fn def_visit_decl(d: &@ast::decl) { }
-
-fn def_visit_local(l: &@ast::local) { }
-
-fn def_visit_expr(e: &@ast::expr) { }
-
-fn def_visit_ty(t: &@ast::ty) { }
-
-fn def_visit_constr(c: &@ast::constr) { }
-
-fn def_visit_fn(f: &ast::_fn, tps: &ast::ty_param[], sp: &span,
-                i: &ast::fn_ident, d: ast::node_id) {
-}
-
-fn default_visitor() -> ast_visitor {
-    ret {keep_going: def_keep_going,
-         want_crate_directives: def_want_crate_directives,
-         visit_crate_pre: def_visit_crate,
-         visit_crate_post: def_visit_crate,
-         visit_crate_directive_pre: def_visit_crate_directive,
-         visit_crate_directive_post: def_visit_crate_directive,
-         visit_view_item_pre: def_visit_view_item,
-         visit_view_item_post: def_visit_view_item,
-         visit_native_item_pre: def_visit_native_item,
-         visit_native_item_post: def_visit_native_item,
-         visit_item_pre: def_visit_item,
-         visit_item_post: def_visit_item,
-         visit_method_pre: def_visit_method,
-         visit_method_post: def_visit_method,
-         visit_block_pre: def_visit_block,
-         visit_block_post: def_visit_block,
-         visit_stmt_pre: def_visit_stmt,
-         visit_stmt_post: def_visit_stmt,
-         visit_arm_pre: def_visit_arm,
-         visit_arm_post: def_visit_arm,
-         visit_pat_pre: def_visit_pat,
-         visit_pat_post: def_visit_pat,
-         visit_decl_pre: def_visit_decl,
-         visit_decl_post: def_visit_decl,
-         visit_local_pre: def_visit_local,
-         visit_local_post: def_visit_local,
-         visit_expr_pre: def_visit_expr,
-         visit_expr_post: def_visit_expr,
-         visit_ty_pre: def_visit_ty,
-         visit_ty_post: def_visit_ty,
-         visit_constr: def_visit_constr,
-         visit_fn_pre: def_visit_fn,
-         visit_fn_post: def_visit_fn};
-}
-//
-// Local Variables:
-// mode: rust
-// fill-column: 78;
-// indent-tabs-mode: nil
-// c-basic-offset: 4
-// buffer-file-coding-system: utf-8-unix
-// compile-command: "make -k -C $RBUILD 2>&1 | sed -e 's/\\/x\\//x:\\//g'";
-// End:
-//