struct S; trait Tr { type A; } impl Tr for S { type A = S; } fn f() { let s = T::A {}; //~^ ERROR expected struct, variant or union type, found associated type let z = T::A:: {}; //~^ ERROR expected struct, variant or union type, found associated type //~| ERROR type arguments are not allowed on this type match S { T::A {} => {} //~^ ERROR expected struct, variant or union type, found associated type } } fn g>() { let s = T::A {}; // OK let z = T::A:: {}; //~ ERROR type arguments are not allowed on this type match S { T::A {} => {} // OK } } fn main() { let s = S::A {}; //~ ERROR ambiguous associated type let z = S::A:: {}; //~ ERROR ambiguous associated type match S { S::A {} => {} //~ ERROR ambiguous associated type } }