From c63054d6326d12bccf2ac387d3eb51da9204601e Mon Sep 17 00:00:00 2001 From: Jeffrey Seyfried Date: Sat, 5 Mar 2016 22:22:44 +0000 Subject: [PATCH] Add method `visibility` to `CrateStore` --- src/librustc/middle/cstore.rs | 2 ++ src/librustc_metadata/csearch.rs | 5 +++++ src/librustc_metadata/decoder.rs | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/src/librustc/middle/cstore.rs b/src/librustc/middle/cstore.rs index 3af987df3a8c..193492ee7e10 100644 --- a/src/librustc/middle/cstore.rs +++ b/src/librustc/middle/cstore.rs @@ -137,6 +137,7 @@ pub trait CrateStore<'tcx> : Any { // item info fn stability(&self, def: DefId) -> Option; fn deprecation(&self, def: DefId) -> Option; + fn visibility(&self, def: DefId) -> hir::Visibility; fn closure_kind(&self, tcx: &TyCtxt<'tcx>, def_id: DefId) -> ty::ClosureKind; fn closure_ty(&self, tcx: &TyCtxt<'tcx>, def_id: DefId) @@ -302,6 +303,7 @@ impl<'tcx> CrateStore<'tcx> for DummyCrateStore { // item info fn stability(&self, def: DefId) -> Option { unimplemented!() } fn deprecation(&self, def: DefId) -> Option { unimplemented!() } + fn visibility(&self, def: DefId) -> hir::Visibility { unimplemented!() } fn closure_kind(&self, tcx: &TyCtxt<'tcx>, def_id: DefId) -> ty::ClosureKind { unimplemented!() } fn closure_ty(&self, tcx: &TyCtxt<'tcx>, def_id: DefId) diff --git a/src/librustc_metadata/csearch.rs b/src/librustc_metadata/csearch.rs index 63db3d3c870e..b3f24b8f16b1 100644 --- a/src/librustc_metadata/csearch.rs +++ b/src/librustc_metadata/csearch.rs @@ -49,6 +49,11 @@ impl<'tcx> CrateStore<'tcx> for cstore::CStore { decoder::get_deprecation(&cdata, def.index) } + fn visibility(&self, def: DefId) -> hir::Visibility { + let cdata = self.get_crate_data(def.krate); + decoder::get_visibility(&cdata, def.index) + } + fn closure_kind(&self, _tcx: &TyCtxt<'tcx>, def_id: DefId) -> ty::ClosureKind { assert!(!def_id.is_local()); diff --git a/src/librustc_metadata/decoder.rs b/src/librustc_metadata/decoder.rs index e286e028f333..96e4f8a72f18 100644 --- a/src/librustc_metadata/decoder.rs +++ b/src/librustc_metadata/decoder.rs @@ -545,6 +545,10 @@ pub fn get_deprecation(cdata: Cmd, id: DefIndex) -> Option { }) } +pub fn get_visibility(cdata: Cmd, id: DefIndex) -> hir::Visibility { + item_visibility(cdata.lookup_item(id)) +} + pub fn get_repr_attrs(cdata: Cmd, id: DefIndex) -> Vec { let item = cdata.lookup_item(id); match reader::maybe_get_doc(item, tag_items_data_item_repr).map(|doc| {