Skip to content

Commit

Permalink
Make sure type_param_predicates resolves correctly for RPITIT
Browse files Browse the repository at this point in the history
  • Loading branch information
compiler-errors committed Oct 30, 2024
1 parent 298c746 commit d53ca63
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 0 deletions.
10 changes: 10 additions & 0 deletions compiler/rustc_hir_analysis/src/collect/predicates_of.rs
Original file line number Diff line number Diff line change
Expand Up @@ -764,6 +764,16 @@ pub(super) fn type_param_predicates<'tcx>(
tcx: TyCtxt<'tcx>,
(item_def_id, def_id, assoc_name): (LocalDefId, LocalDefId, Ident),
) -> ty::EarlyBinder<'tcx, &'tcx [(ty::Clause<'tcx>, Span)]> {
match tcx.opt_rpitit_info(item_def_id.to_def_id()) {
Some(ty::ImplTraitInTraitData::Trait { opaque_def_id, .. }) => {
return tcx.type_param_predicates((opaque_def_id.expect_local(), def_id, assoc_name));
}
Some(ty::ImplTraitInTraitData::Impl { .. }) => {
unreachable!("should not be lowering bounds on RPITIT in impl")
}
None => {}
}

use rustc_hir::*;
use rustc_middle::ty::Ty;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
//@ check-pass

// Ensure that we can resolve a shorthand projection in an item bound in an RPITIT.

pub trait Bar {
type Foo;
}

pub trait Baz {
fn boom<X: Bar>() -> impl Bar<Foo = X::Foo>;
}

fn main() {}

0 comments on commit d53ca63

Please sign in to comment.