Add a separate AST mapping phase

This will replace the various node_id-to-node mappings done in several
other passes. This commit already uses the new map in resolve, dropping
the ast_map that was built there before.
This commit is contained in:
Marijn Haverbeke 2011-06-20 09:59:16 +02:00
parent 77af54bf6f
commit 40db3aa6fb
3 changed files with 16 additions and 22 deletions

View file

@ -80,9 +80,11 @@ fn compile_input(session::session sess, eval::env env, str input,
auto crate =
time(time_passes, "parsing", bind parse_input(sess, p, input));
if (sess.get_opts().output_type == link::output_type_none) { ret; }
auto ast_map = time(time_passes, "ast indexing",
bind middle::ast_map::map_crate(*crate));
auto d =
time(time_passes, "resolution",
bind resolve::resolve_crate(sess, crate));
bind resolve::resolve_crate(sess, ast_map, crate));
auto ty_cx = ty::mk_ctxt(sess, d._0, d._1);
time[()](time_passes, "typechecking",
bind typeck::check_crate(ty_cx, crate));
@ -107,7 +109,8 @@ fn pretty_print_input(session::session sess, eval::env env, str input,
auto mode;
alt (ppm) {
case (ppm_typed) {
auto d = resolve::resolve_crate(sess, crate);
auto amap = middle::ast_map::map_crate(*crate);
auto d = resolve::resolve_crate(sess, amap, crate);
auto ty_cx = ty::mk_ctxt(sess, d._0, d._1);
typeck::check_crate(ty_cx, crate);
mode = ppaux::mo_typed(ty_cx);