mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 11:31:15 +00:00
Merge pull request #19566 from flodiebold/push-vzpyzvpkwkyt
Fix dyn compatibility code bypassing callable_item_signature query
This commit is contained in:
commit
1bf840bb50
@ -150,7 +150,7 @@ pub trait HirDatabase: DefDatabase + std::fmt::Debug {
|
|||||||
#[salsa::invoke_actual(crate::lower::field_types_query)]
|
#[salsa::invoke_actual(crate::lower::field_types_query)]
|
||||||
fn field_types(&self, var: VariantId) -> Arc<ArenaMap<LocalFieldId, Binders<Ty>>>;
|
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;
|
fn callable_item_signature(&self, def: CallableDefId) -> PolyFnSig;
|
||||||
|
|
||||||
#[salsa::invoke_actual(crate::lower::return_type_impl_traits)]
|
#[salsa::invoke_actual(crate::lower::return_type_impl_traits)]
|
||||||
|
@ -21,7 +21,6 @@ use crate::{
|
|||||||
db::HirDatabase,
|
db::HirDatabase,
|
||||||
from_assoc_type_id, from_chalk_trait_id,
|
from_assoc_type_id, from_chalk_trait_id,
|
||||||
generics::{generics, trait_self_param_idx},
|
generics::{generics, trait_self_param_idx},
|
||||||
lower::callable_item_sig,
|
|
||||||
to_chalk_trait_id,
|
to_chalk_trait_id,
|
||||||
utils::elaborate_clause_supertraits,
|
utils::elaborate_clause_supertraits,
|
||||||
};
|
};
|
||||||
@ -377,7 +376,7 @@ where
|
|||||||
cb(MethodViolationCode::AsyncFn)?;
|
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| {
|
if sig.skip_binders().params().iter().skip(1).any(|ty| {
|
||||||
contains_illegal_self_type_reference(
|
contains_illegal_self_type_reference(
|
||||||
db,
|
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() }
|
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);
|
let sig = sig.substitute(Interner, &subst);
|
||||||
sig.params_and_return.first().cloned()
|
sig.params_and_return.first().cloned()
|
||||||
}
|
}
|
||||||
|
@ -713,7 +713,7 @@ impl<'a> TyLoweringContext<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Build the signature of a callable item (function, struct or enum variant).
|
/// 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 {
|
match def {
|
||||||
CallableDefId::FunctionId(f) => fn_sig_for_fn(db, f),
|
CallableDefId::FunctionId(f) => fn_sig_for_fn(db, f),
|
||||||
CallableDefId::StructId(s) => fn_sig_for_struct_constructor(db, s),
|
CallableDefId::StructId(s) => fn_sig_for_struct_constructor(db, s),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user