// TypeOutlives predicates - these are normally used by regionck.
let outlives_predicates: Vec<_> = predicates
.drain_filter(|predicate| {
- matches!(predicate.kind().skip_binder(), ty::PredicateKind::TypeOutlives(..))
+ matches!(
+ predicate.kind().skip_binder(),
+ ty::PredicateKind::Clause(ty::Clause::TypeOutlives(..))
+ )
})
.collect();
// associated items.
if let Some(trait_def_id) = tcx.trait_of_item(key.0) {
let trait_ref = ty::TraitRef::from_method(tcx, trait_def_id, key.1);
- predicates.push(ty::Binder::dummy(trait_ref).to_poly_trait_predicate().to_predicate(tcx));
+ predicates.push(ty::Binder::dummy(trait_ref).to_predicate(tcx));
}
predicates.retain(|predicate| !predicate.needs_subst());
vtable_trait_upcasting_coercion_new_vptr_slot,
subst_and_check_impossible_predicates,
is_impossible_method,
- try_unify_abstract_consts: |tcx, param_env_and| {
- let (param_env, (a, b)) = param_env_and.into_parts();
- const_evaluatable::try_unify_abstract_consts(tcx, (a, b), param_env)
- },
..*providers
};
}