summaryrefslogtreecommitdiffstats
path: root/src/test/ui/higher-rank-trait-bounds/hrtb-binder-levels-in-object-types.rs
blob: cc766c0605c9f03e648a2299bba744b01bb6fb2b (plain)
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
29
// 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() { }