]> git.lizzy.rs Git - rust.git/blobdiff - src/librustc_passes/static_recursion.rs
Instrument a bunch of tasks that employ the HIR map in one way or
[rust.git] / src / librustc_passes / static_recursion.rs
index b49db16b4ceed957e249d34e95c04bd961a3dd90..329ce21edbef40deaa2ed58ecb569641054c7e09 100644 (file)
@@ -11,8 +11,9 @@
 // This compiler pass detects constants that refer to themselves
 // recursively.
 
+use rustc::dep_graph::DepNode;
 use rustc::front::map as ast_map;
-use rustc::session::Session;
+use rustc::session::{Session, CompileResult};
 use rustc::middle::def::{Def, DefMap};
 use rustc::util::nodemap::NodeMap;
 
@@ -90,18 +91,20 @@ fn visit_impl_item(&mut self, ii: &'ast hir::ImplItem) {
 }
 
 pub fn check_crate<'ast>(sess: &Session,
-                         krate: &'ast hir::Crate,
                          def_map: &DefMap,
-                         ast_map: &ast_map::Map<'ast>) {
+                         ast_map: &ast_map::Map<'ast>)
+                         -> CompileResult {
+    let _task = ast_map.dep_graph.in_task(DepNode::CheckStaticRecursion);
+
     let mut visitor = CheckCrateVisitor {
         sess: sess,
         def_map: def_map,
         ast_map: ast_map,
         discriminant_map: RefCell::new(NodeMap()),
     };
-    sess.abort_if_new_errors(|| {
-        krate.visit_all_items(&mut visitor);
-    });
+    sess.track_errors(|| {
+        ast_map.krate().visit_all_items(&mut visitor);
+    })
 }
 
 struct CheckItemRecursionVisitor<'a, 'ast: 'a> {