Fix dyn compatibility code bypassing callable_item_signature query
diff --git a/crates/hir-ty/src/db.rs b/crates/hir-ty/src/db.rs
index 879b7d8..0d05690 100644
--- a/crates/hir-ty/src/db.rs
+++ b/crates/hir-ty/src/db.rs
@@ -150,7 +150,7 @@
#[salsa::invoke_actual(crate::lower::field_types_query)]
fn field_types(&self, var: VariantId) -> Arc<ArenaMap<LocalFieldId, Binders<Ty>>>;
- #[salsa::invoke_actual(crate::lower::callable_item_sig)]
+ #[salsa::invoke_actual(crate::lower::callable_item_signature_query)]
fn callable_item_signature(&self, def: CallableDefId) -> PolyFnSig;
#[salsa::invoke_actual(crate::lower::return_type_impl_traits)]
diff --git a/crates/hir-ty/src/dyn_compatibility.rs b/crates/hir-ty/src/dyn_compatibility.rs
index a3376d9..80b1847 100644
--- a/crates/hir-ty/src/dyn_compatibility.rs
+++ b/crates/hir-ty/src/dyn_compatibility.rs
@@ -21,7 +21,6 @@
db::HirDatabase,
from_assoc_type_id, from_chalk_trait_id,
generics::{generics, trait_self_param_idx},
- lower::callable_item_sig,
to_chalk_trait_id,
utils::elaborate_clause_supertraits,
};
@@ -377,7 +376,7 @@
cb(MethodViolationCode::AsyncFn)?;
}
- let sig = callable_item_sig(db, func.into());
+ let sig = db.callable_item_signature(func.into());
if sig.skip_binders().params().iter().skip(1).any(|ty| {
contains_illegal_self_type_reference(
db,
@@ -558,7 +557,7 @@
if idx == trait_self_idx { ty.clone().cast(Interner) } else { arg.clone() }
}),
);
- let sig = callable_item_sig(db, func.into());
+ let sig = db.callable_item_signature(func.into());
let sig = sig.substitute(Interner, &subst);
sig.params_and_return.first().cloned()
}
diff --git a/crates/hir-ty/src/lower.rs b/crates/hir-ty/src/lower.rs
index 3ef15e5..6bf26b7 100644
--- a/crates/hir-ty/src/lower.rs
+++ b/crates/hir-ty/src/lower.rs
@@ -713,7 +713,7 @@
}
/// Build the signature of a callable item (function, struct or enum variant).
-pub(crate) fn callable_item_sig(db: &dyn HirDatabase, def: CallableDefId) -> PolyFnSig {
+pub(crate) fn callable_item_signature_query(db: &dyn HirDatabase, def: CallableDefId) -> PolyFnSig {
match def {
CallableDefId::FunctionId(f) => fn_sig_for_fn(db, f),
CallableDefId::StructId(s) => fn_sig_for_struct_constructor(db, s),