Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/infer/callee.rs')
| -rw-r--r-- | crates/hir-ty/src/infer/callee.rs | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/crates/hir-ty/src/infer/callee.rs b/crates/hir-ty/src/infer/callee.rs index 2d1584aa4f..057ba7fa86 100644 --- a/crates/hir-ty/src/infer/callee.rs +++ b/crates/hir-ty/src/infer/callee.rs @@ -2,6 +2,7 @@ use std::iter; +use rustc_abi::ExternAbi; use tracing::debug; use hir_def::{CallableDefId, ConstParamId, hir::ExprId, signatures::FunctionSignature}; @@ -11,7 +12,7 @@ use rustc_type_ir::{ }; use crate::{ - Adjust, Adjustment, AutoBorrow, FnAbi, + Adjust, Adjustment, AutoBorrow, autoderef::{GeneralAutoderef, InferenceContextAutoderef}, infer::{ AllowTwoPhase, AutoBorrowMutability, Expectation, InferenceContext, InferenceDiagnostic, @@ -181,9 +182,9 @@ impl<'db> InferenceContext<'_, 'db> { interner.coroutine_for_closure(def_id), tupled_upvars_ty, ), - coroutine_closure_sig.c_variadic, - coroutine_closure_sig.safety, - coroutine_closure_sig.abi, + coroutine_closure_sig.fn_sig_kind.c_variadic(), + coroutine_closure_sig.fn_sig_kind.safety(), + coroutine_closure_sig.fn_sig_kind.abi(), ); let adjust_steps = autoderef.adjust_steps_as_infer_ok(); let adjustments = autoderef.ctx().table.register_infer_ok(adjust_steps); @@ -430,8 +431,11 @@ impl<'db> InferenceContext<'_, 'db> { ) -> Ty<'db> { let (fn_sig, def_id) = match callee_ty.kind() { TyKind::FnDef(def_id, args) => { - let fn_sig = - self.db.callable_item_signature(def_id.0).instantiate(self.interner(), args); + let fn_sig = self + .db + .callable_item_signature(def_id.0) + .instantiate(self.interner(), args) + .skip_norm_wip(); (fn_sig, Some(def_id.0)) } @@ -460,11 +464,11 @@ impl<'db> InferenceContext<'_, 'db> { expected, arg_exprs, &indices_to_skip, - fn_sig.c_variadic, + fn_sig.c_variadic(), TupleArgumentsFlag::DontTupleArguments, ); - if fn_sig.abi == FnAbi::RustCall + if fn_sig.abi() == ExternAbi::RustCall && let Some(ty) = fn_sig.inputs().last().copied() && let Some(tuple_trait) = self.lang_items.Tuple { @@ -494,7 +498,7 @@ impl<'db> InferenceContext<'_, 'db> { expected, arg_exprs, &[], - fn_sig.c_variadic, + fn_sig.c_variadic(), TupleArgumentsFlag::TupleArguments, ); @@ -515,7 +519,7 @@ impl<'db> InferenceContext<'_, 'db> { expected, arg_exprs, &[], - method.sig.c_variadic, + method.sig.c_variadic(), TupleArgumentsFlag::TupleArguments, ); |