Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/infer/opaques.rs')
| -rw-r--r-- | crates/hir-ty/src/infer/opaques.rs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/crates/hir-ty/src/infer/opaques.rs b/crates/hir-ty/src/infer/opaques.rs index a39288721b..63149deb82 100644 --- a/crates/hir-ty/src/infer/opaques.rs +++ b/crates/hir-ty/src/infer/opaques.rs @@ -4,6 +4,7 @@ use rustc_type_ir::{TypeVisitableExt, fold_regions}; use tracing::{debug, instrument}; use crate::{ + Span, infer::InferenceContext, next_solver::{ EarlyBinder, OpaqueTypeKey, SolverDefId, TypingMode, @@ -68,13 +69,13 @@ impl<'db> InferenceContext<'_, 'db> { mut opaque_types: Vec<(OpaqueTypeKey<'db>, OpaqueHiddenType<'db>)>, ) { for entry in opaque_types.iter_mut() { - *entry = self.table.infer_ctxt.resolve_vars_if_possible(*entry); + *entry = self.resolve_vars_if_possible(*entry); } debug!(?opaque_types); let interner = self.interner(); let TypingMode::Analysis { defining_opaque_types_and_generators } = - self.table.infer_ctxt.typing_mode() + self.table.infer_ctxt.typing_mode_raw() else { unreachable!(); }; @@ -107,8 +108,9 @@ impl<'db> InferenceContext<'_, 'db> { continue; } - let expected = - EarlyBinder::bind(ty.ty).instantiate(interner, opaque_type_key.args); + let expected = EarlyBinder::bind(ty.ty) + .instantiate(interner, opaque_type_key.args) + .skip_norm_wip(); _ = self.demand_eqtype_fixme_no_diag(expected, hidden_type.ty); } @@ -135,7 +137,8 @@ impl<'db> InferenceContext<'_, 'db> { return UsageKind::UnconstrainedHiddenType(hidden_type); } - let cause = ObligationCause::new(); + // FIXME: This should not use a dummy span. + let cause = ObligationCause::new(Span::Dummy); let at = self.table.infer_ctxt.at(&cause, self.table.param_env); let hidden_type = match at.deeply_normalize(hidden_type) { Ok(hidden_type) => hidden_type, |