summaryrefslogtreecommitdiffstats
path: root/tests/ui/implied-bounds/implied-bounds-on-nested-references-plus-variance.rs
blob: 1f5562497c12e0093bef44adf766fc11ff2e29b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// check-pass
// known-bug: #25860

// Should fail. The combination of variance and implied bounds for nested
// references allows us to infer a longer lifetime than we can prove.

static UNIT: &'static &'static () = &&();

fn foo<'a, 'b, T>(_: &'a &'b (), v: &'b T) -> &'a T { v }

fn bad<'a, T>(x: &'a T) -> &'static T {
    let f: fn(_, &'a T) -> &'static T = foo;
    f(UNIT, x)
}

fn main() {}