query for deprecation
This commit is contained in:
parent
33535afda4
commit
c1d97c7d5a
5 changed files with 24 additions and 18 deletions
|
@ -151,6 +151,8 @@ pub enum DepNode<D: Clone + Debug> {
|
||||||
|
|
||||||
DescribeDef(D),
|
DescribeDef(D),
|
||||||
DefSpan(D),
|
DefSpan(D),
|
||||||
|
Stability(D),
|
||||||
|
Deprecation(D),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<D: Clone + Debug> DepNode<D> {
|
impl<D: Clone + Debug> DepNode<D> {
|
||||||
|
@ -258,6 +260,8 @@ impl<D: Clone + Debug> DepNode<D> {
|
||||||
}
|
}
|
||||||
DescribeDef(ref d) => op(d).map(DescribeDef),
|
DescribeDef(ref d) => op(d).map(DescribeDef),
|
||||||
DefSpan(ref d) => op(d).map(DefSpan),
|
DefSpan(ref d) => op(d).map(DefSpan),
|
||||||
|
Stability(ref d) => op(d).map(Stability),
|
||||||
|
Deprecation(ref d) => op(d).map(Deprecation),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,6 @@ use std::any::Any;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
use syntax::attr;
|
|
||||||
use syntax::ext::base::SyntaxExtension;
|
use syntax::ext::base::SyntaxExtension;
|
||||||
use syntax::symbol::Symbol;
|
use syntax::symbol::Symbol;
|
||||||
use syntax_pos::Span;
|
use syntax_pos::Span;
|
||||||
|
@ -180,8 +179,6 @@ pub trait CrateStore {
|
||||||
fn crate_data_as_rc_any(&self, krate: CrateNum) -> Rc<Any>;
|
fn crate_data_as_rc_any(&self, krate: CrateNum) -> Rc<Any>;
|
||||||
|
|
||||||
// item info
|
// 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 visibility(&self, def: DefId) -> ty::Visibility;
|
||||||
fn visible_parent_map<'a>(&'a self) -> ::std::cell::Ref<'a, DefIdMap<DefId>>;
|
fn visible_parent_map<'a>(&'a self) -> ::std::cell::Ref<'a, DefIdMap<DefId>>;
|
||||||
fn item_generics_cloned(&self, def: DefId) -> ty::Generics;
|
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>
|
fn crate_data_as_rc_any(&self, krate: CrateNum) -> Rc<Any>
|
||||||
{ bug!("crate_data_as_rc_any") }
|
{ bug!("crate_data_as_rc_any") }
|
||||||
// item info
|
// 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 visibility(&self, def: DefId) -> ty::Visibility { bug!("visibility") }
|
||||||
fn visible_parent_map<'a>(&'a self) -> ::std::cell::Ref<'a, DefIdMap<DefId>> {
|
fn visible_parent_map<'a>(&'a self) -> ::std::cell::Ref<'a, DefIdMap<DefId>> {
|
||||||
bug!("visible_parent_map")
|
bug!("visible_parent_map")
|
||||||
|
|
|
@ -636,7 +636,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
|
||||||
if id.is_local() {
|
if id.is_local() {
|
||||||
None // The stability cache is filled partially lazily
|
None // The stability cache is filled partially lazily
|
||||||
} else {
|
} 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() {
|
if id.is_local() {
|
||||||
None // The stability cache is filled partially lazily
|
None // The stability cache is filled partially lazily
|
||||||
} else {
|
} else {
|
||||||
self.sess.cstore.deprecation(id).map(DeprecationEntry::external)
|
self.deprecation(id).map(DeprecationEntry::external)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ use std::collections::BTreeMap;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
use syntax_pos::{Span, DUMMY_SP};
|
use syntax_pos::{Span, DUMMY_SP};
|
||||||
|
use syntax::attr;
|
||||||
use syntax::symbol::Symbol;
|
use syntax::symbol::Symbol;
|
||||||
|
|
||||||
trait Key {
|
trait Key {
|
||||||
|
@ -292,6 +293,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> {
|
impl<'tcx> QueryDescription for queries::item_body_nested_bodies<'tcx> {
|
||||||
fn describe(tcx: TyCtxt, def_id: DefId) -> String {
|
fn describe(tcx: TyCtxt, def_id: DefId) -> String {
|
||||||
format!("nested item bodies of `{}`", tcx.item_path_str(def_id))
|
format!("nested item bodies of `{}`", tcx.item_path_str(def_id))
|
||||||
|
@ -599,7 +613,8 @@ define_maps! { <'tcx>
|
||||||
|
|
||||||
[] describe_def: DescribeDef(DefId) -> Option<Def>,
|
[] describe_def: DescribeDef(DefId) -> Option<Def>,
|
||||||
[] def_span: DefSpan(DefId) -> Span,
|
[] 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>>,
|
[] 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,
|
[] const_is_rvalue_promotable_to_static: metadata_dep_node(DefId) -> bool,
|
||||||
[] is_item_mir_available: metadata_dep_node(DefId) -> bool,
|
[] is_item_mir_available: metadata_dep_node(DefId) -> bool,
|
||||||
|
|
|
@ -115,6 +115,8 @@ provide! { <'tcx> tcx, def_id, cdata
|
||||||
is_foreign_item => { cdata.is_foreign_item(def_id.index) }
|
is_foreign_item => { cdata.is_foreign_item(def_id.index) }
|
||||||
describe_def => { cdata.get_def(def_id.index) }
|
describe_def => { cdata.get_def(def_id.index) }
|
||||||
def_span => { cdata.get_span(def_id.index, &tcx.sess) }
|
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 => {
|
item_body_nested_bodies => {
|
||||||
let map: BTreeMap<_, _> = cdata.entry(def_id.index).ast.into_iter().flat_map(|ast| {
|
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))
|
ast.decode(cdata).nested_bodies.decode(cdata).map(|body| (body.id(), body))
|
||||||
|
@ -137,16 +139,6 @@ impl CrateStore for cstore::CStore {
|
||||||
self.get_crate_data(krate)
|
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 {
|
fn visibility(&self, def: DefId) -> ty::Visibility {
|
||||||
self.dep_graph.read(DepNode::MetaData(def));
|
self.dep_graph.read(DepNode::MetaData(def));
|
||||||
self.get_crate_data(def.krate).get_visibility(def.index)
|
self.get_crate_data(def.krate).get_visibility(def.index)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue