20 struct Proxy<T>(#[allow(unused_tuple_struct_fields)] T);
22 impl<T: Foo> Foo for Proxy<T> {
26 fn sub<A: Foo, B: Foo>() -> i32 {
31 const Y: i32 = Self::X;
35 assert_eq!(11, Abc::X);
36 assert_eq!(97, Def::X);
37 assert_eq!(11, Abc::get_x());
38 assert_eq!(97, Def::get_x());
39 assert_eq!(-86, sub::<Abc, Def>());
40 assert_eq!(86, sub::<Def, Abc>());
41 assert_eq!(-86, sub::<Proxy<Abc>, Def>());
42 assert_eq!(-86, sub::<Abc, Proxy<Def>>());
43 assert_eq!(86, sub::<Proxy<Def>, Proxy<Abc>>());