Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/hir-ty/src/infer/expr.rs2
-rw-r--r--crates/hir-ty/src/infer/path.rs4
-rw-r--r--crates/hir-ty/src/infer/unify.rs13
-rw-r--r--crates/hir-ty/src/lib.rs12
-rw-r--r--crates/hir-ty/src/lower/path.rs2
-rw-r--r--crates/hir-ty/src/method_resolution.rs2
-rw-r--r--crates/hir-ty/src/next_solver/ty.rs9
-rw-r--r--crates/hir/src/lib.rs5
8 files changed, 26 insertions, 23 deletions
diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs
index dc4d34f7b5..226e9f5cd6 100644
--- a/crates/hir-ty/src/infer/expr.rs
+++ b/crates/hir-ty/src/infer/expr.rs
@@ -2170,7 +2170,7 @@ impl<'db> InferenceContext<'_, 'db> {
self.interner(),
ObligationCause::new(),
self.table.param_env,
- TraitRef::new(self.interner(), trait_.into(), substs),
+ TraitRef::new_from_args(self.interner(), trait_.into(), substs),
));
}
}
diff --git a/crates/hir-ty/src/infer/path.rs b/crates/hir-ty/src/infer/path.rs
index 98a2a2ddc0..b11650bbcd 100644
--- a/crates/hir-ty/src/infer/path.rs
+++ b/crates/hir-ty/src/infer/path.rs
@@ -241,7 +241,7 @@ impl<'db> InferenceContext<'_, 'db> {
if let ItemContainerId::TraitId(trait_) = container {
let parent_len = generics(self.db, def).parent_generics().map_or(0, |g| g.len_self());
let parent_subst = GenericArgs::new_from_slice(&subst.as_slice()[..parent_len]);
- let trait_ref = TraitRef::new(interner, trait_.into(), parent_subst);
+ let trait_ref = TraitRef::new_from_args(interner, trait_.into(), parent_subst);
self.table.register_predicate(Obligation::new(
interner,
ObligationCause::new(),
@@ -336,7 +336,7 @@ impl<'db> InferenceContext<'_, 'db> {
[ty.into()],
|_, id, _| self.table.next_var_for_param(id),
);
- let trait_ref = TraitRef::new(self.interner(), trait_.into(), args);
+ let trait_ref = TraitRef::new_from_args(self.interner(), trait_.into(), args);
self.table.register_predicate(Obligation::new(
self.interner(),
ObligationCause::new(),
diff --git a/crates/hir-ty/src/infer/unify.rs b/crates/hir-ty/src/infer/unify.rs
index ac84797f37..d55fc0ab0d 100644
--- a/crates/hir-ty/src/infer/unify.rs
+++ b/crates/hir-ty/src/infer/unify.rs
@@ -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));
diff --git a/crates/hir-ty/src/lib.rs b/crates/hir-ty/src/lib.rs
index 4076572993..6081196bac 100644
--- a/crates/hir-ty/src/lib.rs
+++ b/crates/hir-ty/src/lib.rs
@@ -77,8 +77,8 @@ use crate::{
infer::unify::InferenceTable,
next_solver::{
AliasTy, Binder, BoundConst, BoundRegion, BoundRegionKind, BoundTy, BoundTyKind, Canonical,
- CanonicalVarKind, CanonicalVars, Const, ConstKind, DbInterner, FnSig, PolyFnSig, Predicate,
- Region, RegionKind, TraitRef, Ty, TyKind, Tys, abi,
+ CanonicalVarKind, CanonicalVars, Const, ConstKind, DbInterner, FnSig, GenericArgs,
+ PolyFnSig, Predicate, Region, RegionKind, TraitRef, Ty, TyKind, Tys, abi,
},
};
@@ -491,12 +491,12 @@ pub fn callable_sig_from_fn_trait<'db>(
// - Self: FnOnce<?args_ty>
// - <Self as FnOnce<?args_ty>>::Output == ?ret_ty
let args_ty = table.next_ty_var();
- let args = [self_ty, args_ty];
- let trait_ref = TraitRef::new(table.interner(), fn_once_trait.into(), args);
+ let args = GenericArgs::new_from_slice(&[self_ty.into(), args_ty.into()]);
+ let trait_ref = TraitRef::new_from_args(table.interner(), fn_once_trait.into(), args);
let projection = Ty::new_alias(
table.interner(),
rustc_type_ir::AliasTyKind::Projection,
- AliasTy::new(table.interner(), output_assoc_type.into(), args),
+ AliasTy::new_from_args(table.interner(), output_assoc_type.into(), args),
);
let pred = Predicate::upcast_from(trait_ref, table.interner());
@@ -505,7 +505,7 @@ pub fn callable_sig_from_fn_trait<'db>(
let return_ty = table.normalize_alias_ty(projection);
for fn_x in [FnTrait::Fn, FnTrait::FnMut, FnTrait::FnOnce] {
let fn_x_trait = fn_x.get_id(lang_items)?;
- let trait_ref = TraitRef::new(table.interner(), fn_x_trait.into(), args);
+ let trait_ref = TraitRef::new_from_args(table.interner(), fn_x_trait.into(), args);
if !table
.try_obligation(Predicate::upcast_from(trait_ref, table.interner()))
.no_solution()
diff --git a/crates/hir-ty/src/lower/path.rs b/crates/hir-ty/src/lower/path.rs
index 54ce1f7402..a79f547c2a 100644
--- a/crates/hir-ty/src/lower/path.rs
+++ b/crates/hir-ty/src/lower/path.rs
@@ -506,7 +506,7 @@ impl<'a, 'b, 'db> PathLoweringContext<'a, 'b, 'db> {
Some(Ty::new_alias(
interner,
AliasTyKind::Projection,
- AliasTy::new(interner, associated_ty.into(), substs),
+ AliasTy::new_from_args(interner, associated_ty.into(), substs),
))
};
named_associated_type_shorthand_candidates(
diff --git a/crates/hir-ty/src/method_resolution.rs b/crates/hir-ty/src/method_resolution.rs
index fee3f66409..c370330a87 100644
--- a/crates/hir-ty/src/method_resolution.rs
+++ b/crates/hir-ty/src/method_resolution.rs
@@ -362,7 +362,7 @@ pub fn lookup_impl_const<'db>(
ItemContainerId::TraitId(id) => id,
_ => return (const_id, subs),
};
- let trait_ref = TraitRef::new(interner, trait_id.into(), subs);
+ let trait_ref = TraitRef::new_from_args(interner, trait_id.into(), subs);
let const_signature = db.const_signature(const_id);
let name = match const_signature.name.as_ref() {
diff --git a/crates/hir-ty/src/next_solver/ty.rs b/crates/hir-ty/src/next_solver/ty.rs
index ee460aff44..c89831bd40 100644
--- a/crates/hir-ty/src/next_solver/ty.rs
+++ b/crates/hir-ty/src/next_solver/ty.rs
@@ -696,9 +696,12 @@ impl<'db> Ty<'db> {
// This is only used by type walking.
// Parameters will be walked outside, and projection predicate is not used.
// So just provide the Future trait.
- let impl_bound =
- TraitRef::new(interner, future_trait.into(), GenericArgs::empty(interner))
- .upcast(interner);
+ let impl_bound = TraitRef::new_from_args(
+ interner,
+ future_trait.into(),
+ GenericArgs::empty(interner),
+ )
+ .upcast(interner);
Some(vec![impl_bound])
} else {
None
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs
index 883f1aa26e..90a0c2b402 100644
--- a/crates/hir/src/lib.rs
+++ b/crates/hir/src/lib.rs
@@ -5148,7 +5148,7 @@ impl<'db> Type<'db> {
let projection = Ty::new_alias(
interner,
AliasTyKind::Projection,
- AliasTy::new(interner, alias.id.into(), args),
+ AliasTy::new_from_args(interner, alias.id.into(), args),
);
let infcx = interner.infer_ctxt().build(TypingMode::PostAnalysis);
@@ -5858,7 +5858,8 @@ impl<'db> TypeNs<'db> {
infcx.interner,
[self.ty].into_iter().chain(args.iter().map(|t| t.ty)).map(GenericArg::from),
);
- let trait_ref = hir_ty::next_solver::TraitRef::new(infcx.interner, trait_.id.into(), args);
+ let trait_ref =
+ hir_ty::next_solver::TraitRef::new_from_args(infcx.interner, trait_.id.into(), args);
let pred_kind = rustc_type_ir::Binder::dummy(rustc_type_ir::PredicateKind::Clause(
rustc_type_ir::ClauseKind::Trait(rustc_type_ir::TraitPredicate {