diff --git a/src/librustdoc/clean/inline.rs b/src/librustdoc/clean/inline.rs index 85097549826..1e9796c5f66 100644 --- a/src/librustdoc/clean/inline.rs +++ b/src/librustdoc/clean/inline.rs @@ -122,7 +122,7 @@ fn try_inline_def(cx: &DocContext, tcx: &TyCtxt, name: Some(tcx.item_name(did).to_string()), attrs: load_attrs(cx, tcx, did), inner: inner, - visibility: Some(hir::Public), + visibility: Some(clean::Public), stability: stability::lookup_stability(tcx, did).clean(cx), deprecation: stability::lookup_deprecation(tcx, did).clean(cx), def_id: did, @@ -323,7 +323,7 @@ pub fn build_impl(cx: &DocContext, source: clean::Span::empty(), name: None, attrs: attrs, - visibility: Some(hir::Inherited), + visibility: Some(clean::Inherited), stability: stability::lookup_stability(tcx, did).clean(cx), deprecation: stability::lookup_deprecation(tcx, did).clean(cx), def_id: did, @@ -444,7 +444,7 @@ pub fn build_impl(cx: &DocContext, source: clean::Span::empty(), name: None, attrs: attrs, - visibility: Some(hir::Inherited), + visibility: Some(clean::Inherited), stability: stability::lookup_stability(tcx, did).clean(cx), deprecation: stability::lookup_deprecation(tcx, did).clean(cx), def_id: did, diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index e2189e003ae..42db93e1803 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -22,6 +22,7 @@ pub use self::Attribute::*; pub use self::TyParamBound::*; pub use self::SelfTy::*; pub use self::FunctionRetTy::*; +pub use self::Visibility::*; use syntax; use syntax::abi::Abi; @@ -183,7 +184,7 @@ impl<'a, 'tcx> Clean<Crate> for visit_ast::RustdocVisitor<'a, 'tcx> { source: Span::empty(), name: Some(prim.to_url_str().to_string()), attrs: child.attrs.clone(), - visibility: Some(hir::Public), + visibility: Some(Public), stability: None, deprecation: None, def_id: DefId::local(prim.to_def_index()), @@ -1391,7 +1392,7 @@ impl<'tcx> Clean<Item> for ty::Method<'tcx> { Item { name: Some(self.name.clean(cx)), - visibility: Some(hir::Inherited), + visibility: Some(Inherited), stability: get_stability(cx, self.def_id), deprecation: get_deprecation(cx, self.def_id), def_id: self.def_id, @@ -1777,17 +1778,21 @@ impl<'tcx> Clean<Item> for ty::FieldDefData<'tcx, 'static> { } } -pub type Visibility = hir::Visibility; +#[derive(Clone, PartialEq, Eq, RustcDecodable, RustcEncodable, Debug)] +pub enum Visibility { + Public, + Inherited, +} impl Clean<Option<Visibility>> for hir::Visibility { fn clean(&self, _: &DocContext) -> Option<Visibility> { - Some(self.clone()) + Some(if *self == hir::Visibility::Public { Public } else { Inherited }) } } impl Clean<Option<Visibility>> for ty::Visibility { fn clean(&self, _: &DocContext) -> Option<Visibility> { - Some(if *self == ty::Visibility::Public { hir::Public } else { hir::Inherited }) + Some(if *self == ty::Visibility::Public { Public } else { Inherited }) } } @@ -1919,7 +1924,7 @@ impl<'tcx> Clean<Item> for ty::VariantDefData<'tcx, 'static> { name: Some(self.name.clean(cx)), attrs: inline::load_attrs(cx, cx.tcx(), self.did), source: Span::empty(), - visibility: Some(hir::Inherited), + visibility: Some(Inherited), def_id: self.did, inner: VariantItem(Variant { kind: kind }), stability: get_stability(cx, self.did), @@ -2341,7 +2346,7 @@ impl Clean<Item> for doctree::DefaultImpl { attrs: self.attrs.clean(cx), source: self.whence.clean(cx), def_id: cx.map.local_def_id(self.id), - visibility: Some(hir::Public), + visibility: Some(Public), stability: None, deprecation: None, inner: DefaultImplItem(DefaultImpl { @@ -2700,7 +2705,7 @@ impl Clean<Item> for doctree::Macro { name: Some(name.clone()), attrs: self.attrs.clean(cx), source: self.whence.clean(cx), - visibility: hir::Public.clean(cx), + visibility: Some(Public), stability: self.stab.clean(cx), deprecation: self.depr.clean(cx), def_id: cx.map.local_def_id(self.id), diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs index ce20ad05acb..d2b43ae5bda 100644 --- a/src/librustdoc/html/format.rs +++ b/src/librustdoc/html/format.rs @@ -31,7 +31,7 @@ use html::render::{cache, CURRENT_LOCATION_KEY}; /// Helper to render an optional visibility with a space after it (if the /// visibility is preset) #[derive(Copy, Clone)] -pub struct VisSpace<'a>(pub &'a Option<hir::Visibility>); +pub struct VisSpace<'a>(pub &'a Option<clean::Visibility>); /// Similarly to VisSpace, this structure is used to render a function style with a /// space after it. #[derive(Copy, Clone)] @@ -57,7 +57,7 @@ pub struct CommaSep<'a, T: 'a>(pub &'a [T]); pub struct AbiSpace(pub Abi); impl<'a> VisSpace<'a> { - pub fn get(self) -> &'a Option<hir::Visibility> { + pub fn get(self) -> &'a Option<clean::Visibility> { let VisSpace(v) = self; v } } @@ -639,8 +639,8 @@ impl<'a> fmt::Display for Method<'a> { impl<'a> fmt::Display for VisSpace<'a> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match *self.get() { - Some(hir::Public) => write!(f, "pub "), - Some(hir::Inherited) | None => Ok(()) + Some(clean::Public) => write!(f, "pub "), + Some(clean::Inherited) | None => Ok(()) } } } diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index c5850089578..92e014e81ea 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -1408,7 +1408,8 @@ impl Context { match it.inner { clean::StrippedItem(..) => true, clean::ModuleItem(ref m) => { - it.doc_value().is_none() && m.items.is_empty() && it.visibility != Some(hir::Public) + it.doc_value().is_none() && m.items.is_empty() + && it.visibility != Some(clean::Public) }, _ => false, } diff --git a/src/librustdoc/passes.rs b/src/librustdoc/passes.rs index adc39b69986..0042afb1fd5 100644 --- a/src/librustdoc/passes.rs +++ b/src/librustdoc/passes.rs @@ -14,7 +14,6 @@ use rustc::util::nodemap::DefIdSet; use std::cmp; use std::string::String; use std::usize; -use rustc::hir; use clean::{self, Attributes, GetDefId}; use clean::Item; @@ -133,13 +132,13 @@ impl<'a> fold::DocFolder for Stripper<'a> { } clean::StructFieldItem(..) => { - if i.visibility != Some(hir::Public) { + if i.visibility != Some(clean::Public) { return Strip(i).fold(); } } clean::ModuleItem(..) => { - if i.def_id.is_local() && i.visibility != Some(hir::Public) { + if i.def_id.is_local() && i.visibility != Some(clean::Public) { return Strip(self.fold_item_recur(i).unwrap()).fold() } } @@ -226,7 +225,7 @@ impl fold::DocFolder for ImportStripper { fn fold_item(&mut self, i: Item) -> Option<Item> { match i.inner { clean::ExternCrateItem(..) | - clean::ImportItem(..) if i.visibility != Some(hir::Public) => None, + clean::ImportItem(..) if i.visibility != Some(clean::Public) => None, _ => self.fold_item_recur(i) } }