auto merge of #13827 : lifthrasiir/rust/rustdoc-hidden-pub-field, r=alexcrichton

Fixes #13806. Also adds a note to `HiddenStructField` about why it doesn't appear in the `clean` module itself.
This commit is contained in:
bors 2014-04-28 15:56:45 -07:00
commit 3cd6c1e008
2 changed files with 32 additions and 16 deletions

View File

@ -152,6 +152,21 @@ impl Item {
return None; return None;
} }
pub fn is_hidden_from_doc(&self) -> bool {
match self.doc_list() {
Some(ref l) => {
for innerattr in l.iter() {
match *innerattr {
Word(ref s) if "hidden" == *s => return true,
_ => (),
}
}
},
None => ()
}
return false;
}
pub fn is_mod(&self) -> bool { pub fn is_mod(&self) -> bool {
match self.inner { ModuleItem(..) => true, _ => false } match self.inner { ModuleItem(..) => true, _ => false }
} }
@ -736,7 +751,7 @@ impl Clean<Type> for ast::Ty {
#[deriving(Clone, Encodable, Decodable)] #[deriving(Clone, Encodable, Decodable)]
pub enum StructField { pub enum StructField {
HiddenStructField, HiddenStructField, // inserted later by strip passes
TypedStructField(Type), TypedStructField(Type),
} }

View File

@ -33,23 +33,24 @@ pub fn strip_hidden(krate: clean::Crate) -> plugins::PluginResult {
}; };
impl<'a> fold::DocFolder for Stripper<'a> { impl<'a> fold::DocFolder for Stripper<'a> {
fn fold_item(&mut self, i: Item) -> Option<Item> { fn fold_item(&mut self, i: Item) -> Option<Item> {
for attr in i.attrs.iter() { if i.is_hidden_from_doc() {
match attr {
&clean::List(ref x, ref l) if "doc" == *x => {
for innerattr in l.iter() {
match innerattr {
&clean::Word(ref s) if "hidden" == *s => {
debug!("found one in strip_hidden; removing"); debug!("found one in strip_hidden; removing");
self.stripped.insert(i.id); self.stripped.insert(i.id);
// use a dedicated hidden item for given item type if any
match i.inner {
clean::StructFieldItem(..) => {
return Some(clean::Item {
inner: clean::StructFieldItem(clean::HiddenStructField),
..i
});
}
_ => {
return None; return None;
},
_ => (),
} }
} }
},
_ => ()
}
} }
self.fold_item_recur(i) self.fold_item_recur(i)
} }
} }