]> git.lizzy.rs Git - rust.git/blobdiff - src/librustc/middle/weak_lang_items.rs
Auto merge of #30696 - steveklabnik:gh30655, r=brson
[rust.git] / src / librustc / middle / weak_lang_items.rs
index 32b64f4c606ce5f863d4da1bbd866622539f109e..6059d7ee74e390416f43a3f5eabc739990bd880a 100644 (file)
 
 use session::config;
 use session::Session;
-use metadata::csearch;
+use middle::cstore::CrateStore;
 use middle::lang_items;
 
 use syntax::ast;
 use syntax::codemap::Span;
 use syntax::parse::token::InternedString;
-use syntax::visit::Visitor;
-use syntax::visit;
+use rustc_front::intravisit::Visitor;
+use rustc_front::intravisit;
+use rustc_front::hir;
 
 use std::collections::HashSet;
 
@@ -33,7 +34,7 @@ struct Context<'a> {
 
 /// Checks the crate for usage of weak lang items, returning a vector of all the
 /// language items required by this crate, but not defined yet.
-pub fn check_crate(krate: &ast::Crate,
+pub fn check_crate(krate: &hir::Crate,
                    sess: &Session,
                    items: &mut lang_items::LanguageItems) {
     // These are never called by user code, they're generated by the compiler.
@@ -49,7 +50,7 @@ pub fn check_crate(krate: &ast::Crate,
 
     {
         let mut cx = Context { sess: sess, items: items };
-        visit::walk_crate(&mut cx, krate);
+        krate.visit_all_items(&mut cx);
     }
     verify(sess, items);
 }
@@ -78,11 +79,11 @@ fn verify(sess: &Session, items: &lang_items::LanguageItems) {
     if !needs_check { return }
 
     let mut missing = HashSet::new();
-    sess.cstore.iter_crate_data(|cnum, _| {
-        for item in &csearch::get_missing_lang_items(&sess.cstore, cnum) {
-            missing.insert(*item);
+    for cnum in sess.cstore.crates() {
+        for item in sess.cstore.missing_lang_items(cnum) {
+            missing.insert(item);
         }
-    });
+    }
 
     $(
         if missing.contains(&lang_items::$item) && items.$name().is_none() {
@@ -101,19 +102,19 @@ fn register(&mut self, name: &str, span: Span) {
             }
         } else)* {
             span_err!(self.sess, span, E0264,
-                               "unknown external lang item: `{}`",
-                                       name);
+                      "unknown external lang item: `{}`",
+                      name);
         }
     }
 }
 
 impl<'a, 'v> Visitor<'v> for Context<'a> {
-    fn visit_foreign_item(&mut self, i: &ast::ForeignItem) {
+    fn visit_foreign_item(&mut self, i: &hir::ForeignItem) {
         match lang_items::extract(&i.attrs) {
             None => {}
             Some(lang_item) => self.register(&lang_item, i.span),
         }
-        visit::walk_foreign_item(self, i)
+        intravisit::walk_foreign_item(self, i)
     }
 }