Skip to content

Commit 6aa7493

Browse files
only move access_levels/external_traits after early passes
1 parent 457efc1 commit 6aa7493

File tree

4 files changed

+8
-14
lines changed

4 files changed

+8
-14
lines changed

src/librustdoc/clean/mod.rs

+2-5
Original file line numberDiff line numberDiff line change
@@ -209,18 +209,15 @@ impl<'a, 'tcx, 'rcx, 'cstore> Clean<Crate> for visit_ast::RustdocVisitor<'a, 'tc
209209
}));
210210
}
211211

212-
let mut access_levels = cx.access_levels.borrow_mut();
213-
let mut external_traits = cx.external_traits.borrow_mut();
214-
215212
Crate {
216213
name,
217214
version: None,
218215
src,
219216
module: Some(module),
220217
externs,
221218
primitives,
222-
access_levels: Arc::new(mem::replace(&mut access_levels, Default::default())),
223-
external_traits: mem::replace(&mut external_traits, Default::default()),
219+
access_levels: Arc::new(Default::default()),
220+
external_traits: Default::default(),
224221
masked_crates,
225222
}
226223
}

src/librustdoc/core.rs

+4
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ use std::cell::RefCell;
4141
use std::mem;
4242
use rustc_data_structures::sync::{self, Lrc};
4343
use std::rc::Rc;
44+
use std::sync::Arc;
4445
use std::path::PathBuf;
4546

4647
use visit_ast::RustdocVisitor;
@@ -599,6 +600,9 @@ pub fn run_core(search_paths: SearchPaths,
599600

600601
ctxt.sess().abort_if_errors();
601602

603+
krate.access_levels = Arc::new(ctxt.access_levels.into_inner());
604+
krate.external_traits = ctxt.external_traits.into_inner();
605+
602606
(krate, ctxt.renderinfo.into_inner(), passes)
603607
}), &sess)
604608
})

src/librustdoc/passes/collect_trait_impls.rs

-7
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,5 @@ pub fn collect_trait_impls(mut krate: Crate, cx: &DocContext) -> Crate {
8888
panic!("collect-trait-impls can't run");
8989
}
9090

91-
// pulling in the impls puts their trait info into the DocContext, but that's already been
92-
// drained by now, so stuff that info into the Crate so the rendering can pick it up
93-
let mut external_traits = cx.external_traits.borrow_mut();
94-
for (did, trait_) in external_traits.drain() {
95-
krate.external_traits.entry(did).or_insert(trait_);
96-
}
97-
9891
krate
9992
}

src/librustdoc/passes/strip_private.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ pub const STRIP_PRIVATE: Pass =
2222

2323
/// Strip private items from the point of view of a crate or externally from a
2424
/// crate, specified by the `xcrate` flag.
25-
pub fn strip_private(mut krate: clean::Crate, _: &DocContext) -> clean::Crate {
25+
pub fn strip_private(mut krate: clean::Crate, cx: &DocContext) -> clean::Crate {
2626
// This stripper collects all *retained* nodes.
2727
let mut retained = DefIdSet();
28-
let access_levels = krate.access_levels.clone();
28+
let access_levels = cx.access_levels.borrow().clone();
2929

3030
// strip all private items
3131
{

0 commit comments

Comments
 (0)