Skip to content

Commit a45d387

Browse files
swap external_traits into the crate before running strip_hidden
1 parent de6a897 commit a45d387

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/librustdoc/passes/strip_hidden.rs

+10-3
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,13 @@ pub const STRIP_HIDDEN: Pass =
2424
"strips all doc(hidden) items from the output");
2525

2626
/// Strip items marked `#[doc(hidden)]`
27-
pub fn strip_hidden(krate: clean::Crate, _: &DocContext) -> clean::Crate {
27+
pub fn strip_hidden(mut krate: clean::Crate, cx: &DocContext) -> clean::Crate {
2828
let mut retained = DefIdSet();
2929

30+
// as an early pass, the external traits haven't been swapped in, so we need to do that ahead
31+
// of time
32+
mem::swap(&mut krate.external_traits, &mut cx.external_traits.borrow_mut());
33+
3034
// strip all #[doc(hidden)] items
3135
let krate = {
3236
let mut stripper = Stripper{ retained: &mut retained, update_retained: true };
@@ -35,7 +39,10 @@ pub fn strip_hidden(krate: clean::Crate, _: &DocContext) -> clean::Crate {
3539

3640
// strip all impls referencing stripped items
3741
let mut stripper = ImplStripper { retained: &retained };
38-
stripper.fold_crate(krate)
42+
let mut krate = stripper.fold_crate(krate);
43+
mem::swap(&mut krate.external_traits, &mut cx.external_traits.borrow_mut());
44+
45+
krate
3946
}
4047

4148
struct Stripper<'a> {
@@ -46,7 +53,7 @@ struct Stripper<'a> {
4653
impl<'a> fold::DocFolder for Stripper<'a> {
4754
fn fold_item(&mut self, i: Item) -> Option<Item> {
4855
if i.attrs.lists("doc").has_word("hidden") {
49-
debug!("found one in strip_hidden; removing");
56+
debug!("strip_hidden: stripping {} {:?}", i.type_(), i.name);
5057
// use a dedicated hidden item for given item type if any
5158
match i.inner {
5259
clean::StructFieldItem(..) | clean::ModuleItem(..) => {

0 commit comments

Comments
 (0)