Rollup merge of #100095 - jackh726:early-binder, r=lcnr
More EarlyBinder cleanups Each commit is independent r? types
This commit is contained in:
commit
01ccde5ec8
14 changed files with 94 additions and 68 deletions
|
@ -1886,7 +1886,11 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
|
|||
let sized_crit = def.sized_constraint(self.tcx());
|
||||
// (*) binder moved here
|
||||
Where(obligation.predicate.rebind({
|
||||
sized_crit.iter().map(|ty| EarlyBinder(*ty).subst(self.tcx(), substs)).collect()
|
||||
sized_crit
|
||||
.0
|
||||
.iter()
|
||||
.map(|ty| sized_crit.rebind(*ty).subst(self.tcx(), substs))
|
||||
.collect()
|
||||
}))
|
||||
}
|
||||
|
||||
|
@ -2357,11 +2361,11 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
|
|||
// obligation will normalize to `<$0 as Iterator>::Item = $1` and
|
||||
// `$1: Copy`, so we must ensure the obligations are emitted in
|
||||
// that order.
|
||||
let predicates = tcx.predicates_of(def_id);
|
||||
let predicates = tcx.bound_predicates_of(def_id);
|
||||
debug!(?predicates);
|
||||
assert_eq!(predicates.parent, None);
|
||||
let mut obligations = Vec::with_capacity(predicates.predicates.len());
|
||||
for (predicate, span) in predicates.predicates {
|
||||
assert_eq!(predicates.0.parent, None);
|
||||
let mut obligations = Vec::with_capacity(predicates.0.predicates.len());
|
||||
for (predicate, span) in predicates.0.predicates {
|
||||
let span = *span;
|
||||
let cause = cause.clone().derived_cause(parent_trait_pred, |derived| {
|
||||
ImplDerivedObligation(Box::new(ImplDerivedObligationCause {
|
||||
|
@ -2375,7 +2379,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
|
|||
param_env,
|
||||
cause.clone(),
|
||||
recursion_depth,
|
||||
EarlyBinder(*predicate).subst(tcx, substs),
|
||||
predicates.rebind(*predicate).subst(tcx, substs),
|
||||
&mut obligations,
|
||||
);
|
||||
obligations.push(Obligation { cause, recursion_depth, param_env, predicate });
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue