Align FnPointer with Chalk

This commit is contained in:
Florian Diebold 2021-04-05 22:23:16 +02:00
parent f25c1e7c6a
commit edc59d897d
9 changed files with 86 additions and 40 deletions

View file

@ -12,8 +12,8 @@ use smallvec::SmallVec;
use crate::{
db::HirDatabase, primitive, to_assoc_type_id, to_chalk_trait_id, utils::generics, Binders,
CallableSig, FnPointer, FnSig, GenericArg, Interner, ProjectionTy, Substitution, TraitRef, Ty,
TyDefId, TyKind, TypeWalk, ValueTyDefId,
CallableSig, FnPointer, FnSig, FnSubst, GenericArg, Interner, ProjectionTy, Substitution,
TraitRef, Ty, TyDefId, TyKind, TypeWalk, ValueTyDefId,
};
/// This is a builder for `Ty` or anything that needs a `Substitution`.
@ -78,9 +78,12 @@ impl TyBuilder<()> {
pub fn fn_ptr(sig: CallableSig) -> Ty {
TyKind::Function(FnPointer {
num_args: sig.params().len(),
num_binders: 0,
sig: FnSig { abi: (), safety: Safety::Safe, variadic: sig.is_varargs },
substs: Substitution::from_iter(&Interner, sig.params_and_return.iter().cloned()),
substitution: FnSubst(Substitution::from_iter(
&Interner,
sig.params_and_return.iter().cloned(),
)),
})
.intern(&Interner)
}