1
Fork 0

only move access_levels/external_traits after early passes

This commit is contained in:
QuietMisdreavus 2018-08-10 17:24:40 -05:00
parent 457efc111a
commit 6aa74939bf
4 changed files with 8 additions and 14 deletions

View file

@ -209,9 +209,6 @@ impl<'a, 'tcx, 'rcx, 'cstore> Clean<Crate> for visit_ast::RustdocVisitor<'a, 'tc
})); }));
} }
let mut access_levels = cx.access_levels.borrow_mut();
let mut external_traits = cx.external_traits.borrow_mut();
Crate { Crate {
name, name,
version: None, version: None,
@ -219,8 +216,8 @@ impl<'a, 'tcx, 'rcx, 'cstore> Clean<Crate> for visit_ast::RustdocVisitor<'a, 'tc
module: Some(module), module: Some(module),
externs, externs,
primitives, primitives,
access_levels: Arc::new(mem::replace(&mut access_levels, Default::default())), access_levels: Arc::new(Default::default()),
external_traits: mem::replace(&mut external_traits, Default::default()), external_traits: Default::default(),
masked_crates, masked_crates,
} }
} }

View file

@ -41,6 +41,7 @@ use std::cell::RefCell;
use std::mem; use std::mem;
use rustc_data_structures::sync::{self, Lrc}; use rustc_data_structures::sync::{self, Lrc};
use std::rc::Rc; use std::rc::Rc;
use std::sync::Arc;
use std::path::PathBuf; use std::path::PathBuf;
use visit_ast::RustdocVisitor; use visit_ast::RustdocVisitor;
@ -599,6 +600,9 @@ pub fn run_core(search_paths: SearchPaths,
ctxt.sess().abort_if_errors(); ctxt.sess().abort_if_errors();
krate.access_levels = Arc::new(ctxt.access_levels.into_inner());
krate.external_traits = ctxt.external_traits.into_inner();
(krate, ctxt.renderinfo.into_inner(), passes) (krate, ctxt.renderinfo.into_inner(), passes)
}), &sess) }), &sess)
}) })

View file

@ -88,12 +88,5 @@ pub fn collect_trait_impls(mut krate: Crate, cx: &DocContext) -> Crate {
panic!("collect-trait-impls can't run"); panic!("collect-trait-impls can't run");
} }
// pulling in the impls puts their trait info into the DocContext, but that's already been
// drained by now, so stuff that info into the Crate so the rendering can pick it up
let mut external_traits = cx.external_traits.borrow_mut();
for (did, trait_) in external_traits.drain() {
krate.external_traits.entry(did).or_insert(trait_);
}
krate krate
} }

View file

@ -22,10 +22,10 @@ pub const STRIP_PRIVATE: Pass =
/// Strip private items from the point of view of a crate or externally from a /// Strip private items from the point of view of a crate or externally from a
/// crate, specified by the `xcrate` flag. /// crate, specified by the `xcrate` flag.
pub fn strip_private(mut krate: clean::Crate, _: &DocContext) -> clean::Crate { pub fn strip_private(mut krate: clean::Crate, cx: &DocContext) -> clean::Crate {
// This stripper collects all *retained* nodes. // This stripper collects all *retained* nodes.
let mut retained = DefIdSet(); let mut retained = DefIdSet();
let access_levels = krate.access_levels.clone(); let access_levels = cx.access_levels.borrow().clone();
// strip all private items // strip all private items
{ {