aboutsummaryrefslogtreecommitdiff
path: root/src/comp/driver/rustc.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp/driver/rustc.rs')
-rw-r--r--src/comp/driver/rustc.rs26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs
index 1c9698bd..b38b8c9b 100644
--- a/src/comp/driver/rustc.rs
+++ b/src/comp/driver/rustc.rs
@@ -86,19 +86,21 @@ fn compile_input(session.session sess,
str input, str output) {
auto time_passes = sess.get_opts().time_passes;
auto def = tup(ast.local_crate, 0);
- auto p = parser.new_parser(sess, env, def, input, 0u);
- auto crate = time[@ast.crate](time_passes, "parsing",
- bind parse_input(sess, p, input));
+ auto p = parser.new_parser(sess, env, def, input, 0u, 0u);
+ auto crate = time(time_passes, "parsing",
+ bind parse_input(sess, p, input));
if (sess.get_opts().output_type == Link.output_type_none) {ret;}
- crate = time[@ast.crate](time_passes, "external crate reading",
- bind creader.read_crates(sess, crate));
- crate = time[@ast.crate](time_passes, "resolution",
- bind resolve.resolve_crate(sess, crate));
+ crate = time(time_passes, "external crate reading",
+ bind creader.read_crates(sess, crate));
+ auto res = time(time_passes, "resolution",
+ bind resolve.resolve_crate(sess, crate));
+ crate = res._0;
+ auto def_map = res._1;
time[()](time_passes, "capture checking",
- bind capture.check_for_captures(sess, crate));
+ bind capture.check_for_captures(sess, crate, def_map));
- auto ty_cx = ty.mk_ctxt(sess);
+ auto ty_cx = ty.mk_ctxt(sess, def_map);
auto typeck_result =
time[typeck.typecheck_result](time_passes, "typechecking",
bind typeck.check_crate(ty_cx, crate));
@@ -106,8 +108,8 @@ fn compile_input(session.session sess,
auto type_cache = typeck_result._1;
if (sess.get_opts().run_typestate) {
- crate = time[@ast.crate](time_passes, "typestate checking",
- bind typestate_check.check_crate(crate));
+ crate = time(time_passes, "typestate checking",
+ bind typestate_check.check_crate(crate, def_map));
}
auto llmod = time[llvm.ModuleRef](time_passes, "translation",
@@ -121,7 +123,7 @@ fn pretty_print_input(session.session sess,
eval.env env,
str input) {
auto def = tup(ast.local_crate, 0);
- auto p = front.parser.new_parser(sess, env, def, input, 0u);
+ auto p = front.parser.new_parser(sess, env, def, input, 0u, 0u);
auto crate = front.parser.parse_crate_from_source_file(p);
pretty.pprust.print_file(sess, crate.node.module, input, std.IO.stdout());
}