Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/infer/path.rs')
| -rw-r--r-- | crates/hir-ty/src/infer/path.rs | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/crates/hir-ty/src/infer/path.rs b/crates/hir-ty/src/infer/path.rs index c9262ce12e..a2bcf02589 100644 --- a/crates/hir-ty/src/infer/path.rs +++ b/crates/hir-ty/src/infer/path.rs @@ -16,7 +16,7 @@ use crate::{ lower::{GenericPredicates, LifetimeElisionKind}, method_resolution::{self, CandidateId, MethodError}, next_solver::{ - GenericArg, GenericArgs, TraitRef, Ty, infer::traits::ObligationCause, + GenericArg, GenericArgs, TraitRef, Ty, Unnormalized, infer::traits::ObligationCause, util::clauses_as_obligations, }, }; @@ -42,7 +42,7 @@ impl<'db> InferenceContext<'_, 'db> { self.add_required_obligations_for_value_path(id, generic_def, args); - let ty = self.db.value_ty(value_def)?.instantiate(self.interner(), args); + let ty = self.db.value_ty(value_def)?.instantiate(self.interner(), args).skip_norm_wip(); let ty = self.process_remote_user_written_ty(ty); Some((value, ty)) } @@ -78,7 +78,7 @@ impl<'db> InferenceContext<'_, 'db> { }; } ValueNs::ImplSelf(impl_id) => { - let ty = self.db.impl_self_ty(impl_id).instantiate_identity(); + let ty = self.db.impl_self_ty(impl_id).instantiate_identity().skip_norm_wip(); return if let Some((AdtId::StructId(struct_id), substs)) = ty.as_adt() { Some(ValuePathResolution::GenericDef( struct_id.into(), @@ -237,7 +237,9 @@ impl<'db> InferenceContext<'_, 'db> { let predicates = GenericPredicates::query_all(self.db, def); let param_env = self.table.param_env; self.table.register_predicates(clauses_as_obligations( - predicates.iter_instantiated(interner, subst.as_slice()), + predicates + .iter_instantiated(interner, subst.as_slice()) + .map(Unnormalized::skip_norm_wip), ObligationCause::new(node), param_env, )); @@ -315,8 +317,11 @@ impl<'db> InferenceContext<'_, 'db> { let substs = match container { ItemContainerId::ImplId(impl_id) => { let impl_substs = self.table.fresh_args_for_item(id.into(), impl_id.into()); - let impl_self_ty = - self.db.impl_self_ty(impl_id).instantiate(self.interner(), impl_substs); + let impl_self_ty = self + .db + .impl_self_ty(impl_id) + .instantiate(self.interner(), impl_substs) + .skip_norm_wip(); _ = self.demand_eqtype(id, impl_self_ty, ty); impl_substs } |