Also check for associated fns on primitives in E0223 similar-path check.
This commit is contained in:
parent
221b6214c0
commit
7e1a8bd633
3 changed files with 66 additions and 16 deletions
|
@ -9,6 +9,7 @@ use rustc_hir as hir;
|
|||
use rustc_hir::def::{DefKind, Res};
|
||||
use rustc_hir::def_id::DefId;
|
||||
use rustc_middle::bug;
|
||||
use rustc_middle::ty::fast_reject::{TreatParams, simplify_type};
|
||||
use rustc_middle::ty::print::{PrintPolyTraitRefExt as _, PrintTraitRefExt as _};
|
||||
use rustc_middle::ty::{
|
||||
self, AdtDef, GenericParamDefKind, Ty, TyCtxt, TypeVisitableExt,
|
||||
|
@ -998,10 +999,15 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
|
|||
)),
|
||||
..
|
||||
}) = node
|
||||
&& let Some(adt_def) = qself_ty.ty_adt_def()
|
||||
&& let Some(inherent_impls) = qself_ty
|
||||
.ty_adt_def()
|
||||
.map(|adt_def| tcx.inherent_impls(adt_def.did()))
|
||||
.or_else(|| {
|
||||
simplify_type(tcx, qself_ty, TreatParams::InstantiateWithInfer)
|
||||
.map(|simple_ty| tcx.incoherent_impls(simple_ty))
|
||||
})
|
||||
&& let name = Symbol::intern(&format!("{ident2}_{ident3}"))
|
||||
&& let Some(ty::AssocItem { kind: ty::AssocKind::Fn, .. }) = tcx
|
||||
.inherent_impls(adt_def.did())
|
||||
&& let Some(ty::AssocItem { kind: ty::AssocKind::Fn, .. }) = inherent_impls
|
||||
.iter()
|
||||
.flat_map(|inherent_impl| {
|
||||
tcx.associated_items(inherent_impl).filter_by_name_unhygienic(name)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue