about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-10-22 16:47:14 +0000
committerbors <bors@rust-lang.org>2014-10-22 16:47:14 +0000
commit9f0c29af0263a13c123722122877f818dfec3b8f (patch)
tree1356ed282e02be69ecf71320ec723da63764d833
parent1d647564b1e575b3ca1e56aee33e3376a8e43772 (diff)
parent370c9c54c2e9b9a308b4fa2a48460e0d54794729 (diff)
auto merge of #17846 : tomjakubowski/rust/rustdoc-hide-private-traits, r=alexcrichton
Fix #16563
-rw-r--r--src/librustdoc/passes.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/librustdoc/passes.rs b/src/librustdoc/passes.rs
index 1a9dd226f87..7c4d28d5adb 100644
--- a/src/librustdoc/passes.rs
+++ b/src/librustdoc/passes.rs
@@ -134,7 +134,18 @@ impl<'a> fold::DocFolder for Stripper<'a> {
             clean::StructItem(..) | clean::EnumItem(..) |
             clean::TraitItem(..) | clean::FunctionItem(..) |
             clean::VariantItem(..) | clean::MethodItem(..) |
-            clean::ForeignFunctionItem(..) | clean::ForeignStaticItem(..) |
+            clean::ForeignFunctionItem(..) | clean::ForeignStaticItem(..) => {
+                if ast_util::is_local(i.def_id) {
+                    if !self.exported_items.contains(&i.def_id.node) {
+                        return None;
+                    }
+                    // Traits are in exported_items even when they're totally private.
+                    if i.is_trait() && i.visibility != Some(ast::Public) {
+                        return None;
+                    }
+                }
+            }
+
             clean::ConstantItem(..) => {
                 if ast_util::is_local(i.def_id) &&
                    !self.exported_items.contains(&i.def_id.node) {