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:
commit
3cd6c1e008
@ -152,6 +152,21 @@ impl Item {
|
||||
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 {
|
||||
match self.inner { ModuleItem(..) => true, _ => false }
|
||||
}
|
||||
@ -736,7 +751,7 @@ impl Clean<Type> for ast::Ty {
|
||||
|
||||
#[deriving(Clone, Encodable, Decodable)]
|
||||
pub enum StructField {
|
||||
HiddenStructField,
|
||||
HiddenStructField, // inserted later by strip passes
|
||||
TypedStructField(Type),
|
||||
}
|
||||
|
||||
|
@ -33,23 +33,24 @@ pub fn strip_hidden(krate: clean::Crate) -> plugins::PluginResult {
|
||||
};
|
||||
impl<'a> fold::DocFolder for Stripper<'a> {
|
||||
fn fold_item(&mut self, i: Item) -> Option<Item> {
|
||||
for attr in i.attrs.iter() {
|
||||
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 => {
|
||||
if i.is_hidden_from_doc() {
|
||||
debug!("found one in strip_hidden; removing");
|
||||
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;
|
||||
},
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
},
|
||||
_ => ()
|
||||
}
|
||||
}
|
||||
|
||||
self.fold_item_recur(i)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user