summaryrefslogtreecommitdiffstats
path: root/tests/ui/suggestions/lifetimes/missing-lifetimes-in-signature-2.rs
blob: 99c8e9626af7f4b95316524c2322e85bcb64af05 (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
30
31
32
33
34
// Regression test for #81650
// run-rustfix

#![allow(warnings)]

struct Foo<'a> {
    x: &'a mut &'a i32,
}

impl<'a> Foo<'a> {
    fn bar<F, T>(&self, f: F)
    where
        F: FnOnce(&Foo<'a>) -> T,
        F: 'a,
    {}
}

trait Test {
    fn test(&self);
}

fn func<T: Test>(_dummy: &Foo, foo: &Foo, t: T) {
    foo.bar(move |_| {
    //~^ ERROR the parameter type `T` may not live long enough
        t.test();
    });
}

// Test that the suggested fix does not overconstrain `func`. See #115375.
fn test_func<'a, T: Test + 'a>(dummy: &Foo, foo: &Foo<'a>, t: T) {
    func(dummy, foo, t);
}

fn main() {}