diff options
| author | Florian Diebold <flodiebold@gmail.com> | 2025-04-10 15:11:34 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-10 15:11:34 +0000 |
| commit | 3ccb636dd870b7010887617dfd0dfcd445f7efad (patch) | |
| tree | 57bc1897a3fb794d651dbb1a832c18472230b2d6 /src/tools/rust-analyzer | |
| parent | a25e7a7317b07f7af138ebd381826b57f0f45e3c (diff) | |
| parent | 505521efd6f6d83e01d867cb8852178d47a39270 (diff) | |
| download | rust-3ccb636dd870b7010887617dfd0dfcd445f7efad.tar.gz rust-3ccb636dd870b7010887617dfd0dfcd445f7efad.zip | |
Merge pull request #19566 from flodiebold/push-vzpyzvpkwkyt
Fix dyn compatibility code bypassing callable_item_signature query
Diffstat (limited to 'src/tools/rust-analyzer')
| -rw-r--r-- | src/tools/rust-analyzer/crates/hir-ty/src/db.rs | 2 | ||||
| -rw-r--r-- | src/tools/rust-analyzer/crates/hir-ty/src/dyn_compatibility.rs | 5 | ||||
| -rw-r--r-- | src/tools/rust-analyzer/crates/hir-ty/src/lower.rs | 2 |
3 files changed, 4 insertions, 5 deletions
diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/db.rs b/src/tools/rust-analyzer/crates/hir-ty/src/db.rs index 879b7d83b7a..0d056900849 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/db.rs +++ b/src/tools/rust-analyzer/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<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/src/tools/rust-analyzer/crates/hir-ty/src/dyn_compatibility.rs b/src/tools/rust-analyzer/crates/hir-ty/src/dyn_compatibility.rs index a3376d93014..80b18473907 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/dyn_compatibility.rs +++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/hir-ty/src/lower.rs b/src/tools/rust-analyzer/crates/hir-ty/src/lower.rs index 3ef15e5a2c9..6bf26b7ae3f 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/lower.rs +++ b/src/tools/rust-analyzer/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), |
