mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-04 14:07:36 +00:00
Auto merge of #83681 - jyn514:blanket-impls-tweaks, r=Aaron1011
rustdoc: Only look at blanket impls in `get_blanket_impls`
The idea here is that all the work in 16156fb278/compiler/rustc_middle/src/ty/trait_def.rs (L172-L186)
doesn't matter for `get_blanket_impls` - Rustdoc will already pick up on those blocks when it documents the item.
This commit is contained in:
commit
2a32abbcde
@ -69,6 +69,12 @@ pub struct TraitImpls {
|
|||||||
non_blanket_impls: FxHashMap<fast_reject::SimplifiedType, Vec<DefId>>,
|
non_blanket_impls: FxHashMap<fast_reject::SimplifiedType, Vec<DefId>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TraitImpls {
|
||||||
|
pub fn blanket_impls(&self) -> &[DefId] {
|
||||||
|
self.blanket_impls.as_slice()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<'tcx> TraitDef {
|
impl<'tcx> TraitDef {
|
||||||
pub fn new(
|
pub fn new(
|
||||||
def_id: DefId,
|
def_id: DefId,
|
||||||
|
@ -26,7 +26,9 @@ impl<'a, 'tcx> BlanketImplFinder<'a, 'tcx> {
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
self.cx.tcx.for_each_relevant_impl(trait_def_id, ty, |impl_def_id| {
|
// NOTE: doesn't use `for_each_relevant_impl` to avoid looking at anything besides blanket impls
|
||||||
|
let trait_impls = self.cx.tcx.trait_impls_of(trait_def_id);
|
||||||
|
for &impl_def_id in trait_impls.blanket_impls() {
|
||||||
debug!(
|
debug!(
|
||||||
"get_blanket_impls: Considering impl for trait '{:?}' {:?}",
|
"get_blanket_impls: Considering impl for trait '{:?}' {:?}",
|
||||||
trait_def_id, impl_def_id
|
trait_def_id, impl_def_id
|
||||||
@ -86,7 +88,7 @@ impl<'a, 'tcx> BlanketImplFinder<'a, 'tcx> {
|
|||||||
may_apply, trait_ref, ty
|
may_apply, trait_ref, ty
|
||||||
);
|
);
|
||||||
if !may_apply {
|
if !may_apply {
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.cx.generated_synthetics.insert((ty, trait_def_id));
|
self.cx.generated_synthetics.insert((ty, trait_def_id));
|
||||||
@ -127,7 +129,7 @@ impl<'a, 'tcx> BlanketImplFinder<'a, 'tcx> {
|
|||||||
blanket_impl: Some(trait_ref.self_ty().clean(self.cx)),
|
blanket_impl: Some(trait_ref.self_ty().clean(self.cx)),
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
impls
|
impls
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user