1
Fork 0

Use the right binder for rebinding PolyTraitRef

This commit is contained in:
Michael Goulet 2025-02-12 23:52:53 +00:00
parent ef148cd7eb
commit 88193aad72
2 changed files with 20 additions and 2 deletions

View file

@ -47,11 +47,11 @@ pub fn expand_trait_aliases<'tcx>(
queue.extend(
tcx.explicit_super_predicates_of(trait_pred.def_id())
.iter_identity_copied()
.map(|(clause, span)| {
.map(|(super_clause, span)| {
let mut spans = spans.clone();
spans.push(span);
(
clause.instantiate_supertrait(
super_clause.instantiate_supertrait(
tcx,
clause.kind().rebind(trait_pred.trait_ref),
),

View file

@ -0,0 +1,18 @@
// Make sure we are using the right binder vars when expanding
// `for<'a> Foo<'a>` to `for<'a> Bar<'a>`.
//@ check-pass
#![feature(trait_alias)]
trait Bar<'a> {}
trait Foo<'a> = Bar<'a>;
fn test2(_: &(impl for<'a> Foo<'a> + ?Sized)) {}
fn test(x: &dyn for<'a> Foo<'a>) {
test2(x);
}
fn main() {}