]> git.lizzy.rs Git - rust.git/commitdiff
query for deprecation
authorachernyak <artemchernyak@gmail.com>
Tue, 2 May 2017 11:53:34 +0000 (06:53 -0500)
committerachernyak <artemchernyak@gmail.com>
Tue, 2 May 2017 11:53:34 +0000 (06:53 -0500)
src/librustc/dep_graph/dep_node.rs
src/librustc/middle/cstore.rs
src/librustc/middle/stability.rs
src/librustc/ty/maps.rs
src/librustc_metadata/cstore_impl.rs

index d05ede07c3f6477b672505b4208550c5eaafd45a..0f31fae507ee480217b5b61d561654122082caf1 100644 (file)
@@ -151,6 +151,8 @@ pub enum DepNode<D: Clone + Debug> {
 
     DescribeDef(D),
     DefSpan(D),
+    Stability(D),
+    Deprecation(D),
 }
 
 impl<D: Clone + Debug> DepNode<D> {
@@ -258,6 +260,8 @@ pub fn map_def<E, OP>(&self, mut op: OP) -> Option<DepNode<E>>
             }
             DescribeDef(ref d) => op(d).map(DescribeDef),
             DefSpan(ref d) => op(d).map(DefSpan),
+            Stability(ref d) => op(d).map(Stability),
+            Deprecation(ref d) => op(d).map(Deprecation),
         }
     }
 }
index 50920ca7f7ea0c3b3e372ed37aa669856d4a0f36..303c5059e7cf3d6136445d2a076dbe601243aeb4 100644 (file)
@@ -38,7 +38,6 @@
 use std::path::PathBuf;
 use std::rc::Rc;
 use syntax::ast;
-use syntax::attr;
 use syntax::ext::base::SyntaxExtension;
 use syntax::symbol::Symbol;
 use syntax_pos::Span;
@@ -180,8 +179,6 @@ pub trait CrateStore {
     fn crate_data_as_rc_any(&self, krate: CrateNum) -> Rc<Any>;
 
     // item info
-    fn stability(&self, def: DefId) -> Option<attr::Stability>;
-    fn deprecation(&self, def: DefId) -> Option<attr::Deprecation>;
     fn visibility(&self, def: DefId) -> ty::Visibility;
     fn visible_parent_map<'a>(&'a self) -> ::std::cell::Ref<'a, DefIdMap<DefId>>;
     fn item_generics_cloned(&self, def: DefId) -> ty::Generics;
@@ -306,8 +303,6 @@ impl CrateStore for DummyCrateStore {
     fn crate_data_as_rc_any(&self, krate: CrateNum) -> Rc<Any>
         { bug!("crate_data_as_rc_any") }
     // item info
-    fn stability(&self, def: DefId) -> Option<attr::Stability> { bug!("stability") }
-    fn deprecation(&self, def: DefId) -> Option<attr::Deprecation> { bug!("deprecation") }
     fn visibility(&self, def: DefId) -> ty::Visibility { bug!("visibility") }
     fn visible_parent_map<'a>(&'a self) -> ::std::cell::Ref<'a, DefIdMap<DefId>> {
         bug!("visible_parent_map")
index 1ac7f4fcc95c272e7c88a562cb4f2ac0e5dff866..198f7420f5d2b7af19a79a06ccb481ff2e5c1522 100644 (file)
@@ -636,7 +636,7 @@ fn lookup_stability_uncached(self, id: DefId) -> Option<&'gcx Stability> {
         if id.is_local() {
             None // The stability cache is filled partially lazily
         } else {
-            self.sess.cstore.stability(id).map(|st| self.intern_stability(st))
+            self.stability(id).map(|st| self.intern_stability(st))
         }
     }
 
@@ -645,7 +645,7 @@ fn lookup_deprecation_uncached(self, id: DefId) -> Option<DeprecationEntry> {
         if id.is_local() {
             None // The stability cache is filled partially lazily
         } else {
-            self.sess.cstore.deprecation(id).map(DeprecationEntry::external)
+            self.deprecation(id).map(DeprecationEntry::external)
         }
     }
 }
index 3f18a480dd67cf68d9f67b1db04077410ef2a831..013e1646f2cbce6cf62b1506c4bf6cfdd9dc847e 100644 (file)
@@ -28,6 +28,7 @@
 use std::ops::Deref;
 use std::rc::Rc;
 use syntax_pos::{Span, DUMMY_SP};
+use syntax::attr;
 use syntax::symbol::Symbol;
 
 trait Key {
@@ -292,6 +293,19 @@ fn describe(_: TyCtxt, _: DefId) -> String {
     }
 }
 
+
+impl<'tcx> QueryDescription for queries::stability<'tcx> {
+    fn describe(_: TyCtxt, _: DefId) -> String {
+        bug!("stability")
+    }
+}
+
+impl<'tcx> QueryDescription for queries::deprecation<'tcx> {
+    fn describe(_: TyCtxt, _: DefId) -> String {
+        bug!("deprecation")
+    }
+}
+
 impl<'tcx> QueryDescription for queries::item_body_nested_bodies<'tcx> {
     fn describe(tcx: TyCtxt, def_id: DefId) -> String {
         format!("nested item bodies of `{}`", tcx.item_path_str(def_id))
@@ -599,7 +613,8 @@ fn default() -> Self {
 
     [] describe_def: DescribeDef(DefId) -> Option<Def>,
     [] def_span: DefSpan(DefId) -> Span,
-
+    [] stability: Stability(DefId) -> Option<attr::Stability>,
+    [] deprecation: Deprecation(DefId) -> Option<attr::Deprecation>,
     [] item_body_nested_bodies: metadata_dep_node(DefId) -> Rc<BTreeMap<hir::BodyId, hir::Body>>,
     [] const_is_rvalue_promotable_to_static: metadata_dep_node(DefId) -> bool,
     [] is_item_mir_available: metadata_dep_node(DefId) -> bool,
index f5a8accea2803200bcaf23447bafbdc97150d57d..3c88aa25e98861f419b9e37678e36827bd5f5f4d 100644 (file)
@@ -115,6 +115,8 @@ pub fn provide<$lt>(providers: &mut Providers<$lt>) {
     is_foreign_item => { cdata.is_foreign_item(def_id.index) }
     describe_def => { cdata.get_def(def_id.index) }
     def_span => { cdata.get_span(def_id.index, &tcx.sess) }
+    stability => { cdata.get_stability(def_id.index) }
+    deprecation => { cdata.get_deprecation(def_id.index) }
     item_body_nested_bodies => {
         let map: BTreeMap<_, _> = cdata.entry(def_id.index).ast.into_iter().flat_map(|ast| {
             ast.decode(cdata).nested_bodies.decode(cdata).map(|body| (body.id(), body))
@@ -137,16 +139,6 @@ fn crate_data_as_rc_any(&self, krate: CrateNum) -> Rc<Any> {
         self.get_crate_data(krate)
     }
 
-    fn stability(&self, def: DefId) -> Option<attr::Stability> {
-        self.dep_graph.read(DepNode::MetaData(def));
-        self.get_crate_data(def.krate).get_stability(def.index)
-    }
-
-    fn deprecation(&self, def: DefId) -> Option<attr::Deprecation> {
-        self.dep_graph.read(DepNode::MetaData(def));
-        self.get_crate_data(def.krate).get_deprecation(def.index)
-    }
-
     fn visibility(&self, def: DefId) -> ty::Visibility {
         self.dep_graph.read(DepNode::MetaData(def));
         self.get_crate_data(def.krate).get_visibility(def.index)