| trait Trait<'a> { |
| type Foo; |
| |
| type Bar<'b> |
| //~^ NOTE associated type defined here, with 1 lifetime parameter |
| //~| NOTE |
| //~| NOTE |
| where |
| Self: 'b; |
| } |
| |
| struct Impl<'a>(&'a ()); |
| |
| impl<'a> Trait<'a> for Impl<'a> { |
| type Foo = &'a (); |
| type Bar<'b> = &'b (); |
| //~^ ERROR: does not fulfill the required lifetime |
| //~| NOTE: type must outlive the lifetime `'b` |
| } |
| |
| type A<'a> = Impl<'a>; |
| |
| type B<'a> = <A<'a> as Trait>::Foo; |
| //~^ ERROR missing lifetime specifier |
| //~| NOTE expected named lifetime parameter |
| |
| type C<'a, 'b> = <A<'a> as Trait>::Bar; |
| //~^ ERROR missing lifetime specifier |
| //~| ERROR missing generics for associated type |
| //~| NOTE expected named lifetime parameter |
| //~| NOTE these named lifetimes are available to use |
| //~| NOTE expected 1 lifetime argument |
| |
| fn main() {} |