// 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;
}
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> {