From 6e06115e6d7577eb0de71bab2c59b362e9ad4874 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Thu, 10 Apr 2025 16:55:03 +0200 Subject: [PATCH] Fix dyn compatibility code bypassing callable_item_signature query --- crates/hir-ty/src/db.rs | 2 +- crates/hir-ty/src/dyn_compatibility.rs | 5 ++--- crates/hir-ty/src/lower.rs | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/crates/hir-ty/src/db.rs b/crates/hir-ty/src/db.rs index 879b7d83b7..0d05690084 100644 --- a/crates/hir-ty/src/db.rs +++ b/crates/hir-ty/src/db.rs @@ -150,7 +150,7 @@ pub trait HirDatabase: DefDatabase + std::fmt::Debug { #[salsa::invoke_actual(crate::lower::field_types_query)] fn field_types(&self, var: VariantId) -> Arc>>; - #[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 a3376d9301..80b1847390 100644 --- a/crates/hir-ty/src/dyn_compatibility.rs +++ b/crates/hir-ty/src/dyn_compatibility.rs @@ -21,7 +21,6 @@ use crate::{ 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 @@ where 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 @@ fn receiver_for_self_ty(db: &dyn HirDatabase, func: FunctionId, ty: Ty) -> Optio 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 3ef15e5a2c..6bf26b7ae3 100644 --- a/crates/hir-ty/src/lower.rs +++ b/crates/hir-ty/src/lower.rs @@ -713,7 +713,7 @@ impl<'a> TyLoweringContext<'a> { } /// 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),