| pub trait X { | |
| type Y<'a> where Self: 'a; | |
| fn m(&self) -> Self::Y<'_>; | |
| } | |
| impl X for () { | |
| type Y<'a> = &'a (); | |
| fn m(&self) -> Self::Y<'_> { | |
| self | |
| } | |
| } | |
| fn f(x: &impl for<'a> X<Y<'a> = &'a ()>) -> &'static () { | |
| x.m() | |
| //~^ ERROR lifetime may not live long enough | |
| } | |
| fn g<T: for<'a> X<Y<'a> = &'a ()>>(x: &T) -> &'static () { | |
| x.m() | |
| //~^ ERROR lifetime may not live long enough | |
| } | |
| fn h(x: &()) -> &'static () { | |
| x.m() | |
| //~^ ERROR lifetime may not live long enough | |
| } | |
| fn main() { | |
| f(&()); | |
| g(&()); | |
| h(&()); | |
| } |