]> git.lizzy.rs Git - rust.git/commitdiff
swap external_traits into the crate before running strip_hidden
authorQuietMisdreavus <grey@quietmisdreavus.net>
Wed, 15 Aug 2018 15:41:15 +0000 (10:41 -0500)
committerQuietMisdreavus <grey@quietmisdreavus.net>
Thu, 20 Sep 2018 10:42:32 +0000 (05:42 -0500)
src/librustdoc/passes/strip_hidden.rs

index cc0b6fb6d67053b16219e896f9209920177e395b..eab4022a3389f63770dd4610bf164a122ab0c8bc 100644 (file)
                 "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 };
@@ -35,7 +39,10 @@ pub fn strip_hidden(krate: clean::Crate, _: &DocContext) -> clean::Crate {
 
     // 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> {
@@ -46,7 +53,7 @@ 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(..) => {