| #![allow(incomplete_features)] |
| #![feature(generic_associated_types)] |
| #![feature(associated_type_defaults)] |
| |
| // FIXME(#44265) add tests for type-generic and const-genertic associated types. |
| |
| trait Foo { |
| type A<'a>; |
| type B<'a, 'b>; |
| type C; |
| } |
| |
| struct Fooy; |
| |
| impl Foo for Fooy { |
| type A = u32; |
| //~^ ERROR lifetime parameters or bounds on type `A` do not match the trait declaration |
| type B<'a, T> = Vec<T>; |
| //~^ ERROR type `B` has 1 type parameter but its trait declaration has 0 type parameters |
| type C<'a> = u32; |
| //~^ ERROR lifetime parameters or bounds on type `C` do not match the trait declaration |
| } |
| |
| struct Fooer; |
| |
| impl Foo for Fooer { |
| type A<T> = u32; |
| //~^ ERROR type `A` has 1 type parameter but its trait declaration has 0 type parameters |
| type B<'a> = u32; |
| //~^ ERROR lifetime parameters or bounds on type `B` do not match the trait declaration |
| type C<T> = T; |
| //~^ ERROR type `C` has 1 type parameter but its trait declaration has 0 type parameters |
| } |
| |
| fn main() {} |