about summary refs log tree commit diff
path: root/src/librustdoc/passes
diff options
context:
space:
mode:
authorChristian Duerr <contact@christianduerr.com>2017-11-30 21:18:36 +0100
committerChristian Duerr <contact@christianduerr.com>2017-11-30 21:18:36 +0100
commit1df13c057a7f1937170fe600d24256f0bf943ec2 (patch)
treeff7abedf96e6a30f199966b223c39e8e0fb514e2 /src/librustdoc/passes
parentec337b613ec5519a54f2948f9d8b7beea5cba86b (diff)
downloadrust-1df13c057a7f1937170fe600d24256f0bf943ec2.tar.gz
rust-1df13c057a7f1937170fe600d24256f0bf943ec2.zip
Hide trait impl with private trait type parameter
Trait's implementations with private type parameters were displayed in
the implementing struct's documentation until now.

With this change any trait implementation that uses a private type
parameter is now hidden in the docs.
Diffstat (limited to 'src/librustdoc/passes')
-rw-r--r--src/librustdoc/passes/mod.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/librustdoc/passes/mod.rs b/src/librustdoc/passes/mod.rs
index 77d97c84c99..3e15d3d3007 100644
--- a/src/librustdoc/passes/mod.rs
+++ b/src/librustdoc/passes/mod.rs
@@ -184,6 +184,15 @@ impl<'a> fold::DocFolder for ImplStripper<'a> {
                     return None;
                 }
             }
+            if let Some(generics) = imp.trait_.as_ref().and_then(|t| t.generics()) {
+                for typaram in generics {
+                    if let Some(did) = typaram.def_id() {
+                        if did.is_local() && !self.retained.contains(&did) {
+                            return None;
+                        }
+                    }
+                }
+            }
         }
         self.fold_item_recur(i)
     }