blob: 474986283fc4f401d78d7f17c5a12603d14be766 [file] [log] [blame]
// 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<'a, T: Test + 'a>(_dummy: &Foo, foo: &Foo<'a>, 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() {}