Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/infer/unify.rs')
-rw-r--r--crates/hir-ty/src/infer/unify.rs16
1 files changed, 8 insertions, 8 deletions
diff --git a/crates/hir-ty/src/infer/unify.rs b/crates/hir-ty/src/infer/unify.rs
index a5060416a1..d55fc0ab0d 100644
--- a/crates/hir-ty/src/infer/unify.rs
+++ b/crates/hir-ty/src/infer/unify.rs
@@ -9,7 +9,7 @@ use intern::sym;
use rustc_hash::FxHashSet;
use rustc_type_ir::{
TyVid, TypeFoldable, TypeVisitableExt, UpcastFrom,
- inherent::{Const as _, GenericArg as _, IntoKind, SliceLike, Ty as _},
+ inherent::{Const as _, GenericArg as _, IntoKind, Ty as _},
solve::Certainty,
};
use smallvec::SmallVec;
@@ -542,16 +542,14 @@ impl<'db> InferenceTable<'db> {
})
.take(num_args),
);
- let args = [ty, arg_ty];
- let trait_ref = TraitRef::new(self.interner(), fn_trait.into(), args);
+ let args = GenericArgs::new_from_slice(&[ty.into(), arg_ty.into()]);
+ let trait_ref = TraitRef::new_from_args(self.interner(), fn_trait.into(), args);
- let proj_args = self
- .infer_ctxt
- .fill_rest_fresh_args(output_assoc_type.into(), args.into_iter().map(Into::into));
+ let proj_args = self.infer_ctxt.fill_rest_fresh_args(output_assoc_type.into(), args);
let projection = Ty::new_alias(
self.interner(),
rustc_type_ir::AliasTyKind::Projection,
- AliasTy::new(self.interner(), output_assoc_type.into(), proj_args),
+ AliasTy::new_from_args(self.interner(), output_assoc_type.into(), proj_args),
);
let pred = Predicate::upcast_from(trait_ref, self.interner());
@@ -560,7 +558,8 @@ impl<'db> InferenceTable<'db> {
let return_ty = self.normalize_alias_ty(projection);
for &fn_x in subtraits {
let fn_x_trait = fn_x.get_id(lang_items)?;
- let trait_ref = TraitRef::new(self.interner(), fn_x_trait.into(), args);
+ let trait_ref =
+ TraitRef::new_from_args(self.interner(), fn_x_trait.into(), args);
let pred = Predicate::upcast_from(trait_ref, self.interner());
if !self.try_obligation(pred).no_solution() {
return Some((fn_x, arg_tys, return_ty));
@@ -640,6 +639,7 @@ impl<'db> InferenceTable<'db> {
let struct_data = id.fields(self.db);
if let Some((last_field, _)) = struct_data.fields().iter().next_back() {
let last_field_ty = self.db.field_types(id.into())[last_field]
+ .get()
.instantiate(self.interner(), subst);
if structs.contains(&ty) {
// A struct recursively contains itself as a tail field somewhere.