From 370c9c54c2e9b9a308b4fa2a48460e0d54794729 Mon Sep 17 00:00:00 2001 From: Tom Jakubowski Date: Tue, 7 Oct 2014 08:36:55 -0700 Subject: [PATCH] rustdoc: hide private traits in strip-private pass Fix #16563 --- src/librustdoc/passes.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/librustdoc/passes.rs b/src/librustdoc/passes.rs index 1a9dd226f87df..7c4d28d5adb6b 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) {