"concatenates all document attributes into one document attribute"),
("strip-private", passes::strip_private,
"strips all private items from a crate which cannot be seen externally"),
+ ("strip-priv-imports", passes::strip_priv_imports,
+ "strips all private import statements (`use`, `extern crate`) from a crate"),
];
const DEFAULT_PASSES: &'static [&'static str] = &[
retained: &mut retained,
access_levels: &access_levels,
};
- krate = stripper.fold_crate(krate);
+ krate = ImportStripper.fold_crate(stripper.fold_crate(krate));
}
// strip all private implementations of traits
}
}
- clean::ExternCrateItem(..) | clean::ImportItem(_) => {
- if i.visibility != Some(hir::Public) {
- return None
- }
- }
-
clean::StructFieldItem(..) => {
if i.visibility != Some(hir::Public) {
return Some(clean::Item {
return None;
}
}
+ // handled in the `strip-priv-imports` pass
+ clean::ExternCrateItem(..) | clean::ImportItem(_) => {}
+
clean::DefaultImplItem(..) | clean::ImplItem(..) => {}
// tymethods/macros have no control over privacy
}
}
+// This stripper discards all private import statements (`use`, `extern crate`)
+struct ImportStripper;
+impl fold::DocFolder for ImportStripper {
+ fn fold_item(&mut self, i: Item) -> Option<Item> {
+ match i.inner {
+ clean::ExternCrateItem(..) |
+ clean::ImportItem(..) if i.visibility != Some(hir::Public) => None,
+ _ => self.fold_item_recur(i)
+ }
+ }
+}
+
+pub fn strip_priv_imports(krate: clean::Crate) -> plugins::PluginResult {
+ (ImportStripper.fold_crate(krate), None)
+}
pub fn unindent_comments(krate: clean::Crate) -> plugins::PluginResult {
struct CommentCleaner;
--- /dev/null
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
// option. This file may not be copied, modified, or distributed
// except according to those terms.
-// compile-flags:--no-defaults --passes "collapse-docs" --passes "unindent-comments"
+// compile-flags:--no-defaults --passes collapse-docs --passes unindent-comments
// @has issue_15347/fn.foo.html
#[doc(hidden)]
--- /dev/null
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// compile-flags:--no-defaults --passes strip-priv-imports
+// aux-build:empty.rs
+// ignore-cross-compile
+
+// @has issue_27104/index.html
+// @!has - 'extern crate std'
+// @!has - 'use std::prelude::'
+
+// @has - 'pub extern crate empty'
+pub extern crate empty;