Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/next_solver/generic_arg.rs')
-rw-r--r--crates/hir-ty/src/next_solver/generic_arg.rs32
1 files changed, 15 insertions, 17 deletions
diff --git a/crates/hir-ty/src/next_solver/generic_arg.rs b/crates/hir-ty/src/next_solver/generic_arg.rs
index b600f6000d..9936e44321 100644
--- a/crates/hir-ty/src/next_solver/generic_arg.rs
+++ b/crates/hir-ty/src/next_solver/generic_arg.rs
@@ -22,7 +22,7 @@ use smallvec::SmallVec;
use crate::next_solver::{
ConstInterned, PolyFnSig, RegionInterned, TyInterned, impl_foldable_for_interned_slice,
- impl_stored_interned_slice, interned_slice,
+ interned_slice,
};
use super::{
@@ -446,9 +446,15 @@ impl<'db> Relate<DbInterner<'db>> for GenericArg<'db> {
}
}
-interned_slice!(GenericArgsStorage, GenericArgs, GenericArg<'db>, GenericArg<'static>,);
+interned_slice!(
+ GenericArgsStorage,
+ GenericArgs,
+ StoredGenericArgs,
+ generic_args,
+ GenericArg<'db>,
+ GenericArg<'static>,
+);
impl_foldable_for_interned_slice!(GenericArgs);
-impl_stored_interned_slice!(GenericArgsStorage, GenericArgs, StoredGenericArgs);
impl<'db> rustc_type_ir::inherent::GenericArg<DbInterner<'db>> for GenericArg<'db> {}
@@ -574,9 +580,8 @@ impl<'db> GenericArgs<'db> {
// FIXME: should use `ClosureSubst` when possible
match self.as_slice() {
[parent_args @ .., closure_kind_ty, sig_ty, tupled_upvars_ty] => {
- let interner = DbInterner::conjure();
rustc_type_ir::ClosureArgsParts {
- parent_args: GenericArgs::new_from_iter(interner, parent_args.iter().cloned()),
+ parent_args,
closure_sig_as_fn_ptr_ty: sig_ty.expect_ty(),
closure_kind_ty: closure_kind_ty.expect_ty(),
tupled_upvars_ty: tupled_upvars_ty.expect_ty(),
@@ -690,13 +695,10 @@ impl<'db> rustc_type_ir::inherent::GenericArgs<DbInterner<'db>> for GenericArgs<
interner,
TyKind::FnPtr(
sig_tys.map_bound(|s| {
- let inputs = Ty::new_tup_from_iter(interner, s.inputs().iter());
+ let inputs = Ty::new_tup(interner, s.inputs());
let output = s.output();
FnSigTys {
- inputs_and_output: Tys::new_from_iter(
- interner,
- [inputs, output],
- ),
+ inputs_and_output: Tys::new_from_slice(&[inputs, output]),
}
}),
header,
@@ -705,7 +707,7 @@ impl<'db> rustc_type_ir::inherent::GenericArgs<DbInterner<'db>> for GenericArgs<
_ => unreachable!("sig_ty should be last"),
};
rustc_type_ir::ClosureArgsParts {
- parent_args: GenericArgs::new_from_iter(interner, parent_args.iter().cloned()),
+ parent_args,
closure_sig_as_fn_ptr_ty: sig_ty,
closure_kind_ty: closure_kind_ty.expect_ty(),
tupled_upvars_ty: tupled_upvars_ty.expect_ty(),
@@ -728,10 +730,7 @@ impl<'db> rustc_type_ir::inherent::GenericArgs<DbInterner<'db>> for GenericArgs<
tupled_upvars_ty,
coroutine_captures_by_ref_ty,
] => rustc_type_ir::CoroutineClosureArgsParts {
- parent_args: GenericArgs::new_from_iter(
- DbInterner::conjure(),
- parent_args.iter().cloned(),
- ),
+ parent_args,
closure_kind_ty: closure_kind_ty.expect_ty(),
signature_parts_ty: signature_parts_ty.expect_ty(),
tupled_upvars_ty: tupled_upvars_ty.expect_ty(),
@@ -742,11 +741,10 @@ impl<'db> rustc_type_ir::inherent::GenericArgs<DbInterner<'db>> for GenericArgs<
}
fn split_coroutine_args(self) -> rustc_type_ir::CoroutineArgsParts<DbInterner<'db>> {
- let interner = DbInterner::conjure();
match self.as_slice() {
[parent_args @ .., kind_ty, resume_ty, yield_ty, return_ty, tupled_upvars_ty] => {
rustc_type_ir::CoroutineArgsParts {
- parent_args: GenericArgs::new_from_iter(interner, parent_args.iter().cloned()),
+ parent_args,
kind_ty: kind_ty.expect_ty(),
resume_ty: resume_ty.expect_ty(),
yield_ty: yield_ty.expect_ty(),