mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 07:14:28 +00:00
We don't need impl_trait_in_trait_parent_fn anymore
This commit is contained in:
parent
44c8ab9f8b
commit
6f5c51f3f4
@ -2613,19 +2613,6 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||||||
matches!(self.trait_of_item(def_id), Some(trait_id) if self.has_attr(trait_id, sym::const_trait))
|
matches!(self.trait_of_item(def_id), Some(trait_id) if self.has_attr(trait_id, sym::const_trait))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn impl_trait_in_trait_parent_fn(self, mut def_id: DefId) -> DefId {
|
|
||||||
match self.opt_rpitit_info(def_id) {
|
|
||||||
Some(ImplTraitInTraitData::Trait { fn_def_id, .. })
|
|
||||||
| Some(ImplTraitInTraitData::Impl { fn_def_id, .. }) => fn_def_id,
|
|
||||||
None => {
|
|
||||||
while let def_kind = self.def_kind(def_id) && def_kind != DefKind::AssocFn {
|
|
||||||
def_id = self.parent(def_id);
|
|
||||||
}
|
|
||||||
def_id
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Returns the `DefId` of the item within which the `impl Trait` is declared.
|
/// Returns the `DefId` of the item within which the `impl Trait` is declared.
|
||||||
/// For type-alias-impl-trait this is the `type` alias.
|
/// For type-alias-impl-trait this is the `type` alias.
|
||||||
/// For impl-trait-in-assoc-type this is the assoc type.
|
/// For impl-trait-in-assoc-type this is the assoc type.
|
||||||
|
@ -179,8 +179,10 @@ impl<'tcx> TypeVisitor<TyCtxt<'tcx>> for ImplTraitInTraitFinder<'_, 'tcx> {
|
|||||||
|
|
||||||
fn visit_ty(&mut self, ty: Ty<'tcx>) -> std::ops::ControlFlow<Self::BreakTy> {
|
fn visit_ty(&mut self, ty: Ty<'tcx>) -> std::ops::ControlFlow<Self::BreakTy> {
|
||||||
if let ty::Alias(ty::Projection, unshifted_alias_ty) = *ty.kind()
|
if let ty::Alias(ty::Projection, unshifted_alias_ty) = *ty.kind()
|
||||||
&& self.tcx.is_impl_trait_in_trait(unshifted_alias_ty.def_id)
|
&& let Some(ty::ImplTraitInTraitData::Trait { fn_def_id, .. }
|
||||||
&& self.tcx.impl_trait_in_trait_parent_fn(unshifted_alias_ty.def_id) == self.fn_def_id
|
| ty::ImplTraitInTraitData::Impl { fn_def_id, .. })
|
||||||
|
= self.tcx.opt_rpitit_info(unshifted_alias_ty.def_id)
|
||||||
|
&& fn_def_id == self.fn_def_id
|
||||||
&& self.seen.insert(unshifted_alias_ty.def_id)
|
&& self.seen.insert(unshifted_alias_ty.def_id)
|
||||||
{
|
{
|
||||||
// We have entered some binders as we've walked into the
|
// We have entered some binders as we've walked into the
|
||||||
|
Loading…
Reference in New Issue
Block a user