"strips all doc(hidden) items from the output");
/// Strip items marked `#[doc(hidden)]`
-pub fn strip_hidden(krate: clean::Crate, _: &DocContext) -> clean::Crate {
+pub fn strip_hidden(mut krate: clean::Crate, cx: &DocContext) -> clean::Crate {
let mut retained = DefIdSet();
+ // as an early pass, the external traits haven't been swapped in, so we need to do that ahead
+ // of time
+ mem::swap(&mut krate.external_traits, &mut cx.external_traits.borrow_mut());
+
// strip all #[doc(hidden)] items
let krate = {
let mut stripper = Stripper{ retained: &mut retained, update_retained: true };
// strip all impls referencing stripped items
let mut stripper = ImplStripper { retained: &retained };
- stripper.fold_crate(krate)
+ let mut krate = stripper.fold_crate(krate);
+ mem::swap(&mut krate.external_traits, &mut cx.external_traits.borrow_mut());
+
+ krate
}
struct Stripper<'a> {
impl<'a> fold::DocFolder for Stripper<'a> {
fn fold_item(&mut self, i: Item) -> Option<Item> {
if i.attrs.lists("doc").has_word("hidden") {
- debug!("found one in strip_hidden; removing");
+ debug!("strip_hidden: stripping {} {:?}", i.type_(), i.name);
// use a dedicated hidden item for given item type if any
match i.inner {
clean::StructFieldItem(..) | clean::ModuleItem(..) => {