Rollup merge of #108350 - compiler-errors:assoc-type-bound-dogfooding, r=oli-obk
Use associated type bounds in some places in the compiler Use associated type bounds for some nested `impl Trait<Assoc = impl Trait2>` cases. I'm generally keen to introduce new lang features that are more mature into the compiler, but maybe let's see what others think? Side-note: I was surprised that the only use-cases of nested impl trait in the compiler are just iterator related?!
This commit is contained in:
commit
d6077f895a
15 changed files with 22 additions and 41 deletions
|
@ -42,7 +42,7 @@ pub trait InferCtxtExt<'tcx> {
|
|||
fn type_implements_trait(
|
||||
&self,
|
||||
trait_def_id: DefId,
|
||||
params: impl IntoIterator<Item = impl Into<GenericArg<'tcx>>>,
|
||||
params: impl IntoIterator<Item: Into<GenericArg<'tcx>>>,
|
||||
param_env: ty::ParamEnv<'tcx>,
|
||||
) -> traits::EvaluationResult;
|
||||
}
|
||||
|
@ -82,7 +82,7 @@ impl<'tcx> InferCtxtExt<'tcx> for InferCtxt<'tcx> {
|
|||
fn type_implements_trait(
|
||||
&self,
|
||||
trait_def_id: DefId,
|
||||
params: impl IntoIterator<Item = impl Into<GenericArg<'tcx>>>,
|
||||
params: impl IntoIterator<Item: Into<GenericArg<'tcx>>>,
|
||||
param_env: ty::ParamEnv<'tcx>,
|
||||
) -> traits::EvaluationResult {
|
||||
let trait_ref = self.tcx.mk_trait_ref(trait_def_id, params);
|
||||
|
|
|
@ -98,7 +98,7 @@ impl<'tcx> ObligationEmittingRelation<'tcx> for CollectAllMismatches<'_, 'tcx> {
|
|||
|
||||
fn register_predicates(
|
||||
&mut self,
|
||||
_obligations: impl IntoIterator<Item = impl ty::ToPredicate<'tcx>>,
|
||||
_obligations: impl IntoIterator<Item: ty::ToPredicate<'tcx>>,
|
||||
) {
|
||||
// FIXME(deferred_projection_equality)
|
||||
}
|
||||
|
|
|
@ -239,7 +239,7 @@ pub fn predicate_for_trait_def<'tcx>(
|
|||
cause: ObligationCause<'tcx>,
|
||||
trait_def_id: DefId,
|
||||
recursion_depth: usize,
|
||||
params: impl IntoIterator<Item = impl Into<GenericArg<'tcx>>>,
|
||||
params: impl IntoIterator<Item: Into<GenericArg<'tcx>>>,
|
||||
) -> PredicateObligation<'tcx> {
|
||||
let trait_ref = tcx.mk_trait_ref(trait_def_id, params);
|
||||
predicate_for_trait_ref(tcx, cause, param_env, trait_ref, recursion_depth)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue