2022-12-26 17:43:31 -06:00
|
|
|
// 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);
|
|
|
|
}
|
|
|
|
|
2023-09-07 20:35:51 -05:00
|
|
|
fn func<'a, T: Test + 'a>(_dummy: &Foo, foo: &Foo<'a>, t: T) {
|
2022-12-26 17:43:31 -06:00
|
|
|
foo.bar(move |_| {
|
|
|
|
//~^ ERROR the parameter type `T` may not live long enough
|
|
|
|
t.test();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2023-09-07 20:35:51 -05:00
|
|
|
// 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);
|
|
|
|
}
|
|
|
|
|
2022-12-26 17:43:31 -06:00
|
|
|
fn main() {}
|