Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/lib.rs')
-rw-r--r--crates/hir-ty/src/lib.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/crates/hir-ty/src/lib.rs b/crates/hir-ty/src/lib.rs
index 323ea951a9..659bc5ade3 100644
--- a/crates/hir-ty/src/lib.rs
+++ b/crates/hir-ty/src/lib.rs
@@ -101,7 +101,10 @@ use crate::{
display::{DisplayTarget, HirDisplay},
generics::Generics,
infer::unify::InferenceTable,
- next_solver::{DbInterner, mapping::convert_ty_for_result},
+ next_solver::{
+ DbInterner,
+ mapping::{ChalkToNextSolver, convert_ty_for_result},
+ },
};
pub use autoderef::autoderef;
@@ -957,8 +960,10 @@ pub fn callable_sig_from_fn_trait(
)
.build();
- if !table.try_obligation(trait_ref.clone().cast(Interner)).no_solution() {
- table.register_obligation(trait_ref.clone().cast(Interner));
+ let goal: Goal = trait_ref.clone().cast(Interner);
+ let pred = goal.to_nextsolver(table.interner);
+ if !table.try_obligation(goal).no_solution() {
+ table.register_obligation(pred);
let return_ty = table.normalize_projection_ty(projection);
for fn_x in [FnTrait::Fn, FnTrait::FnMut, FnTrait::FnOnce] {
let fn_x_trait = fn_x.get_id(db, krate)?;