Skip to content

Commit 5274509

Browse files
rustdoc-json: discard non-local inherent impls
1 parent 80d8270 commit 5274509

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/librustdoc/formats/cache.rs

+9-5
Original file line numberDiff line numberDiff line change
@@ -543,19 +543,23 @@ impl<'a, 'tcx> DocFolder for CacheBuilder<'a, 'tcx> {
543543
}
544544
}
545545
let impl_item = Impl { impl_item: item };
546-
if impl_item.trait_did().map_or(true, |d| self.cache.traits.contains_key(&d)) {
546+
let impl_def_id = impl_item.def_id();
547+
let impl_trait_id = impl_item.trait_did();
548+
if match impl_trait_id {
549+
Some(d) => self.cache.traits.contains_key(&d),
550+
None => impl_def_id.is_local(),
551+
} {
547552
for did in dids {
548-
if self.impl_ids.entry(did).or_default().insert(impl_item.def_id()) {
553+
if self.impl_ids.entry(did).or_default().insert(impl_def_id) {
549554
self.cache
550555
.impls
551556
.entry(did)
552557
.or_insert_with(Vec::new)
553558
.push(impl_item.clone());
554559
}
555560
}
556-
} else {
557-
let trait_did = impl_item.trait_did().expect("no trait did");
558-
self.cache.orphan_trait_impls.push((trait_did, dids, impl_item));
561+
} else if let Some(impl_trait_id) = impl_trait_id {
562+
self.cache.orphan_trait_impls.push((impl_trait_id, dids, impl_item));
559563
}
560564
None
561565
} else {

0 commit comments

Comments
 (0)