// run-pass #![allow(dead_code)] struct S { a: T, b: U, } trait Tr { type A; } impl Tr for u8 { type A = S; } fn f>>() { let s = T::A { a: 0, b: 1 }; match s { T::A { a, b } => { assert_eq!(a, 0); assert_eq!(b, 1); } } } fn main() { f::(); }