diff options
| -rw-r--r-- | src/librustc/dep_graph/dep_node.rs | 4 | ||||
| -rw-r--r-- | src/librustc/middle/cstore.rs | 5 | ||||
| -rw-r--r-- | src/librustc/middle/stability.rs | 4 | ||||
| -rw-r--r-- | src/librustc/ty/maps.rs | 17 | ||||
| -rw-r--r-- | src/librustc_metadata/cstore_impl.rs | 12 |
5 files changed, 24 insertions, 18 deletions
diff --git a/src/librustc/dep_graph/dep_node.rs b/src/librustc/dep_graph/dep_node.rs index 66505d9a06b..37b8a56d916 100644 --- a/src/librustc/dep_graph/dep_node.rs +++ b/src/librustc/dep_graph/dep_node.rs @@ -152,6 +152,8 @@ pub enum DepNode<D: Clone + Debug> { DescribeDef(D), DefSpan(D), + Stability(D), + Deprecation(D), } impl<D: Clone + Debug> DepNode<D> { @@ -260,6 +262,8 @@ impl<D: Clone + Debug> DepNode<D> { } 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), } } } diff --git a/src/librustc/middle/cstore.rs b/src/librustc/middle/cstore.rs index 50920ca7f7e..303c5059e7c 100644 --- a/src/librustc/middle/cstore.rs +++ b/src/librustc/middle/cstore.rs @@ -38,7 +38,6 @@ use std::any::Any; 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") diff --git a/src/librustc/middle/stability.rs b/src/librustc/middle/stability.rs index 1ac7f4fcc95..198f7420f5d 100644 --- a/src/librustc/middle/stability.rs +++ b/src/librustc/middle/stability.rs @@ -636,7 +636,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> { 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 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> { 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) } } } diff --git a/src/librustc/ty/maps.rs b/src/librustc/ty/maps.rs index 385abbd039e..66df8dc050a 100644 --- a/src/librustc/ty/maps.rs +++ b/src/librustc/ty/maps.rs @@ -33,6 +33,7 @@ use std::collections::BTreeMap; use std::ops::Deref; use std::rc::Rc; use syntax_pos::{Span, DUMMY_SP}; +use syntax::attr; use syntax::symbol::Symbol; pub trait Key: Clone + Hash + Eq + Debug { @@ -320,6 +321,19 @@ impl<'tcx> QueryDescription for queries::def_span<'tcx> { } } + +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)) @@ -767,7 +781,8 @@ define_maps! { <'tcx> [] 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_mir_available: metadata_dep_node(DefId) -> bool, diff --git a/src/librustc_metadata/cstore_impl.rs b/src/librustc_metadata/cstore_impl.rs index 872b2eb6f71..a1794ec2d82 100644 --- a/src/librustc_metadata/cstore_impl.rs +++ b/src/librustc_metadata/cstore_impl.rs @@ -111,6 +111,8 @@ provide! { <'tcx> tcx, def_id, cdata 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)) @@ -133,16 +135,6 @@ impl CrateStore for cstore::CStore { 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) |
