1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
//@ 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.
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() { }
|