rust/tests/ui/higher-ranked/trait-bounds/hrtb-binder-levels-in-objec...

30 lines
610 B
Rust

//@ run-pass
#![allow(dead_code)]
#![allow(unused_variables)]
// Test that we handle binder levels in object types correctly.
// Initially, the reference to `'tcx` in the object type
// `&Typer<'tcx>` was getting an incorrect binder level, yielding
// weird compilation ICEs and so forth.
//@ pretty-expanded FIXME #23616
trait Typer<'tcx> {
fn method(&self, data: &'tcx isize) -> &'tcx isize { data }
}
struct Tcx<'tcx> {
fields: &'tcx isize
}
impl<'tcx> Typer<'tcx> for Tcx<'tcx> {
}
fn g<'tcx>(typer: &dyn Typer<'tcx>) {
}
fn check_static_type<'x>(tcx: &Tcx<'x>) {
g(tcx)
}
fn main() { }