Do not skip_binder
s
This commit is contained in:
parent
348386985d
commit
f4ed2d1cca
1 changed files with 9 additions and 6 deletions
|
@ -3133,18 +3133,21 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> {
|
||||||
if let ObligationCauseCode::ExprBindingObligation(def_id, _, _, idx) = parent_code.deref()
|
if let ObligationCauseCode::ExprBindingObligation(def_id, _, _, idx) = parent_code.deref()
|
||||||
&& let predicates = self.tcx.predicates_of(def_id).instantiate_identity(self.tcx)
|
&& let predicates = self.tcx.predicates_of(def_id).instantiate_identity(self.tcx)
|
||||||
&& let Some(pred) = predicates.predicates.get(*idx)
|
&& let Some(pred) = predicates.predicates.get(*idx)
|
||||||
&& let ty::PredicateKind::Clause(ty::Clause::Trait(trait_pred)) = pred.kind().skip_binder()
|
&& let Ok(trait_pred) = pred.kind().try_map_bound(|pred| match pred {
|
||||||
|
ty::PredicateKind::Clause(ty::Clause::Trait(trait_pred)) => Ok(trait_pred),
|
||||||
|
_ => Err(()),
|
||||||
|
})
|
||||||
{
|
{
|
||||||
let mut c = CollectAllMismatches {
|
let mut c = CollectAllMismatches {
|
||||||
infcx: self.infcx,
|
infcx: self.infcx,
|
||||||
param_env,
|
param_env,
|
||||||
errors: vec![],
|
errors: vec![],
|
||||||
};
|
};
|
||||||
if let ty::PredicateKind::Clause(ty::Clause::Trait(
|
if let Ok(trait_predicate) = predicate.kind().try_map_bound(|pred| match pred {
|
||||||
predicate
|
ty::PredicateKind::Clause(ty::Clause::Trait(trait_pred)) => Ok(trait_pred),
|
||||||
)) = predicate.kind().skip_binder()
|
_ => Err(()),
|
||||||
{
|
}) {
|
||||||
if let Ok(_) = c.relate(trait_pred, predicate) {
|
if let Ok(_) = c.relate(trait_pred, trait_predicate) {
|
||||||
type_diffs = c.errors;
|
type_diffs = c.errors;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue