summaryrefslogtreecommitdiffstats
path: root/tests/ui/nll/outlives-suggestion-more.rs
blob: 2e1359fe5d49674cff67b5b21cb228cde2610844 (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
// Test the more elaborate outlives suggestions.

// Should suggest: 'a: 'c, 'b: 'd
fn foo1<'a, 'b, 'c, 'd>(x: &'a usize, y: &'b usize) -> (&'c usize, &'d usize) {
    (x, y) //~ERROR lifetime may not live long enough
           //~^ERROR lifetime may not live long enough
}

// Should suggest: 'a: 'c and use 'static instead of 'b
fn foo2<'a, 'b, 'c>(x: &'a usize, y: &'b usize) -> (&'c usize, &'static usize) {
    (x, y) //~ERROR lifetime may not live long enough
           //~^ERROR lifetime may not live long enough
}

// Should suggest: 'a and 'b are the same and use 'static instead of 'c
fn foo3<'a, 'b, 'c, 'd, 'e>(
    x: &'a usize,
    y: &'b usize,
    z: &'c usize,
) -> (&'b usize, &'a usize, &'static usize) {
    (x, y, z) //~ERROR lifetime may not live long enough
              //~^ERROR lifetime may not live long enough
              //~^^ERROR lifetime may not live long enough
}

fn main() {}