Skip to content

Commit d663b8a

Browse files
committed
rustdoc: Remove Crate.primitives
This involves no longer filtering out impls on primitive types that aren't defined with `#[doc(primitive)]` somewhere in the dependency graph. But, I don't think that filtering is necessary or really has any effect.
1 parent 68b554e commit d663b8a

File tree

3 files changed

+5
-21
lines changed

3 files changed

+5
-21
lines changed

src/librustdoc/clean/types.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,15 +118,14 @@ impl From<DefId> for ItemId {
118118
crate struct Crate {
119119
crate module: Item,
120120
crate externs: Vec<ExternalCrate>,
121-
crate primitives: ThinVec<(DefId, PrimitiveType)>,
122121
/// Only here so that they can be filtered through the rustdoc passes.
123122
crate external_traits: Rc<RefCell<FxHashMap<DefId, TraitWithExtraInfo>>>,
124123
crate collapsed: bool,
125124
}
126125

127126
// `Crate` is frequently moved by-value. Make sure it doesn't unintentionally get bigger.
128127
#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
129-
rustc_data_structures::static_assert_size!(Crate, 104);
128+
rustc_data_structures::static_assert_size!(Crate, 96);
130129

131130
impl Crate {
132131
crate fn name(&self, tcx: TyCtxt<'_>) -> Symbol {

src/librustdoc/clean/utils.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,7 @@ crate fn krate(cx: &mut DocContext<'_>) -> Crate {
7676
}));
7777
}
7878

79-
Crate {
80-
module,
81-
externs,
82-
primitives,
83-
external_traits: cx.external_traits.clone(),
84-
collapsed: false,
85-
}
79+
Crate { module, externs, external_traits: cx.external_traits.clone(), collapsed: false }
8680
}
8781

8882
fn external_generic_args(

src/librustdoc/passes/collect_trait_impls.rs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ crate fn collect_trait_impls(krate: Crate, cx: &mut DocContext<'_>) -> Crate {
2020
(synth.fold_crate(krate), synth.impls)
2121
});
2222

23-
let prims: FxHashSet<PrimitiveType> = krate.primitives.iter().map(|p| p.1).collect();
24-
2523
let crate_items = {
2624
let mut coll = ItemCollector::new();
2725
krate = cx.sess().time("collect_items_for_trait_impls", || coll.fold_crate(krate));
@@ -51,7 +49,7 @@ crate fn collect_trait_impls(krate: Crate, cx: &mut DocContext<'_>) -> Crate {
5149
}
5250
}
5351

54-
let mut cleaner = BadImplStripper { prims, items: crate_items };
52+
let mut cleaner = BadImplStripper { items: crate_items };
5553
let mut type_did_to_deref_target: FxHashMap<DefId, &Type> = FxHashMap::default();
5654

5755
// Follow all `Deref` targets of included items and recursively add them as valid
@@ -62,9 +60,7 @@ crate fn collect_trait_impls(krate: Crate, cx: &mut DocContext<'_>) -> Crate {
6260
) {
6361
if let Some(target) = map.get(&type_did) {
6462
debug!("add_deref_target: type {:?}, target {:?}", type_did, target);
65-
if let Some(target_prim) = target.primitive_type() {
66-
cleaner.prims.insert(target_prim);
67-
} else if let Some(target_did) = target.def_id_no_primitives() {
63+
if let Some(target_did) = target.def_id_no_primitives() {
6864
// `impl Deref<Target = S> for S`
6965
if target_did == type_did {
7066
// Avoid infinite cycles
@@ -90,9 +86,7 @@ crate fn collect_trait_impls(krate: Crate, cx: &mut DocContext<'_>) -> Crate {
9086
})
9187
.expect("Deref impl without Target type");
9288

93-
if let Some(prim) = target.primitive_type() {
94-
cleaner.prims.insert(prim);
95-
} else if let Some(did) = target.def_id(&cx.cache) {
89+
if let Some(did) = target.def_id(&cx.cache) {
9690
cleaner.items.insert(did.into());
9791
}
9892
if let Some(for_did) = for_.def_id_no_primitives() {
@@ -208,7 +202,6 @@ impl DocFolder for ItemCollector {
208202
}
209203

210204
struct BadImplStripper {
211-
prims: FxHashSet<PrimitiveType>,
212205
items: FxHashSet<ItemId>,
213206
}
214207

@@ -217,8 +210,6 @@ impl BadImplStripper {
217210
if let Generic(_) = ty {
218211
// keep impls made on generics
219212
true
220-
} else if let Some(prim) = ty.primitive_type() {
221-
self.prims.contains(&prim)
222213
} else if let Some(did) = ty.def_id_no_primitives() {
223214
is_deref || self.keep_impl_with_def_id(did.into())
224215
} else {

0 commit comments

Comments
 (0)