summaryrefslogtreecommitdiffstats
path: root/src/test/ui/regions/regions-infer-not-param.rs
blob: c3766bce18a2cd08c076fd89d417807bae8ae424 (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
struct Direct<'a> {
    f: &'a isize
}

struct Indirect1 {
    // Here the lifetime parameter of direct is bound by the fn()
    g: Box<dyn FnOnce(Direct) + 'static>
}

struct Indirect2<'a> {
    // But here it is set to 'a
    g: Box<dyn FnOnce(Direct<'a>) + 'static>
}

fn take_direct<'a,'b>(p: Direct<'a>) -> Direct<'b> { p }
//~^ ERROR lifetime may not live long enough

fn take_indirect1(p: Indirect1) -> Indirect1 { p }

fn take_indirect2<'a,'b>(p: Indirect2<'a>) -> Indirect2<'b> { p }
//~^ ERROR lifetime may not live long enough
//~| ERROR lifetime may not live long enough

fn main() {}