| //@ run-pass | |
| #![allow(dead_code)] | |
| struct S<T, U = u16> { | |
| a: T, | |
| b: U, | |
| } | |
| trait Tr { | |
| type A; | |
| } | |
| impl Tr for u8 { | |
| type A = S<u8, u16>; | |
| } | |
| fn f<T: Tr<A = S<u8>>>() { | |
| 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::<u8>(); | |
| } |