Skip to content

Commit

Permalink
Use the right binder for rebinding PolyTraitRef
Browse files Browse the repository at this point in the history
  • Loading branch information
compiler-errors committed Feb 12, 2025
1 parent ef148cd commit 88193aa
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
4 changes: 2 additions & 2 deletions compiler/rustc_trait_selection/src/traits/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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),
),
Expand Down
18 changes: 18 additions & 0 deletions tests/ui/traits/alias/expand-higher-ranked-alias.rs
Original file line number Diff line number Diff line change
@@ -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() {}

0 comments on commit 88193aa

Please sign in to comment.