Skip to content

Commit 0347480

Browse files
Don't store all traits in DocContext
This is already a query so we're just needlessly copying the data around.
1 parent 0031951 commit 0347480

File tree

3 files changed

+5
-7
lines changed

3 files changed

+5
-7
lines changed

src/librustdoc/clean/blanket_impl.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use rustc::traits;
33
use rustc::ty::ToPredicate;
44
use rustc::ty::subst::Subst;
55
use rustc::infer::InferOk;
6+
use rustc::hir::def_id::LOCAL_CRATE;
67
use syntax_pos::DUMMY_SP;
78

89
use super::*;
@@ -27,7 +28,7 @@ impl<'a, 'tcx> BlanketImplFinder<'a, 'tcx> {
2728

2829
debug!("get_blanket_impls({:?})", ty);
2930
let mut impls = Vec::new();
30-
for &trait_def_id in self.cx.all_traits.iter() {
31+
for &trait_def_id in self.cx.tcx.all_traits(LOCAL_CRATE).iter() {
3132
if !self.cx.renderinfo.borrow().access_levels.is_public(trait_def_id) ||
3233
self.cx.generated_synthetics
3334
.borrow_mut()

src/librustdoc/core.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ pub struct DocContext<'tcx> {
6868
/// Auto-trait or blanket impls processed so far, as `(self_ty, trait_def_id)`.
6969
// FIXME(eddyb) make this a `ty::TraitRef<'tcx>` set.
7070
pub generated_synthetics: RefCell<FxHashSet<(Ty<'tcx>, DefId)>>,
71-
pub all_traits: Vec<DefId>,
7271
pub auto_traits: Vec<DefId>,
7372
}
7473

@@ -364,7 +363,6 @@ pub fn run_core(options: RustdocOptions) -> (clean::Crate, RenderInfo, RenderOpt
364363
let mut renderinfo = RenderInfo::default();
365364
renderinfo.access_levels = access_levels;
366365

367-
let all_traits = tcx.all_traits(LOCAL_CRATE).to_vec();
368366
let ctxt = DocContext {
369367
tcx,
370368
resolver,
@@ -379,10 +377,9 @@ pub fn run_core(options: RustdocOptions) -> (clean::Crate, RenderInfo, RenderOpt
379377
fake_def_ids: Default::default(),
380378
all_fake_def_ids: Default::default(),
381379
generated_synthetics: Default::default(),
382-
auto_traits: all_traits.iter().cloned().filter(|trait_def_id| {
380+
auto_traits: tcx.all_traits(LOCAL_CRATE).iter().cloned().filter(|trait_def_id| {
383381
tcx.trait_is_auto(*trait_def_id)
384382
}).collect(),
385-
all_traits,
386383
};
387384
debug!("crate: {:?}", tcx.hir().krate());
388385

src/librustdoc/passes/collect_trait_impls.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::fold::DocFolder;
44
use super::Pass;
55

66
use rustc::util::nodemap::FxHashSet;
7-
use rustc::hir::def_id::DefId;
7+
use rustc::hir::def_id::{LOCAL_CRATE, DefId};
88
use syntax::symbol::sym;
99

1010
pub const COLLECT_TRAIT_IMPLS: Pass = Pass {
@@ -116,7 +116,7 @@ pub fn collect_trait_impls(krate: Crate, cx: &DocContext<'_>) -> Crate {
116116

117117
// `tcx.crates()` doesn't include the local crate, and `tcx.all_trait_implementations`
118118
// doesn't work with it anyway, so pull them from the HIR map instead
119-
for &trait_did in cx.all_traits.iter() {
119+
for &trait_did in cx.tcx.all_traits(LOCAL_CRATE).iter() {
120120
for &impl_node in cx.tcx.hir().trait_impls(trait_did) {
121121
let impl_did = cx.tcx.hir().local_def_id(impl_node);
122122
inline::build_impl(cx, impl_did, None, &mut new_items);

0 commit comments

Comments
 (0)