1
Fork 0

Check whole Unsize predicate for escaping bound vars

This commit is contained in:
Michael Goulet 2025-02-10 21:53:05 +00:00
parent 4b293d9927
commit 95357c772c
3 changed files with 44 additions and 2 deletions

View file

@ -920,11 +920,12 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
// T: Trait
// so it seems ok if we (conservatively) fail to accept that `Unsize`
// obligation above. Should be possible to extend this in the future.
let Some(source) = obligation.self_ty().no_bound_vars() else {
let Some(trait_pred) = obligation.predicate.no_bound_vars() else {
// Don't add any candidates if there are bound regions.
return;
};
let target = obligation.predicate.skip_binder().trait_ref.args.type_at(1);
let source = trait_pred.self_ty();
let target = trait_pred.trait_ref.args.type_at(1);
debug!(?source, ?target, "assemble_candidates_for_unsizing");