1 #![feature(generic_associated_types)] 2 3 trait Shadow<'a> { 4 type Bar<'a>; 5 //~^ ERROR lifetime name `'a` shadows a lifetime name that is already in scope 6 } 7 8 trait NoShadow<'a> { 9 type Bar<'b>; // OK 10 } 11 12 impl<'a> NoShadow<'a> for &'a u32 { 13 type Bar<'a> = i32; 14 //~^ ERROR lifetime name `'a` shadows a lifetime name that is already in scope 15 } 16 17 trait ShadowT<T> { 18 type Bar<T>; 19 //~^ ERROR the name `T` is already used 20 } 21 22 trait NoShadowT<T> { 23 type Bar<U>; // OK 24 } 25 26 impl<T> NoShadowT<T> for Option<T> { 27 type Bar<T> = i32; 28 //~^ ERROR the name `T` is already used 29 } 30 main()31fn main() {} 32