about summary refs log tree commit diff
path: root/src/comp/driver
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2011-06-20 09:59:16 +0200
committerMarijn Haverbeke <marijnh@gmail.com>2011-06-20 23:53:28 +0200
commit40db3aa6fbe2f0d8d7f9bb85a9fd47b8cca2938b (patch)
treee60308a91da459967a7bf419c44986fbed7f6819 /src/comp/driver
parent77af54bf6f7d5e7cb704e08689ea96746bc57819 (diff)
downloadrust-40db3aa6fbe2f0d8d7f9bb85a9fd47b8cca2938b.tar.gz
rust-40db3aa6fbe2f0d8d7f9bb85a9fd47b8cca2938b.zip
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.
Diffstat (limited to 'src/comp/driver')
-rw-r--r--src/comp/driver/rustc.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs
index f5f79fb0a2a..040b551a529 100644
--- a/src/comp/driver/rustc.rs
+++ b/src/comp/driver/rustc.rs
@@ -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);