1 // run-pass
2 // Test unboxed closure sugar used in object types.
3 
4 #![allow(dead_code)]
5 
6 struct Foo<T,U> {
7     t: T, u: U
8 }
9 
10 trait Getter<A,R> {
get(&self, arg: A) -> R11     fn get(&self, arg: A) -> R;
12 }
13 
14 struct Identity;
15 impl<X> Getter<X,X> for Identity {
get(&self, arg: X) -> X16     fn get(&self, arg: X) -> X {
17         arg
18     }
19 }
20 
main()21 fn main() {
22     let x: &dyn Getter<(i32,), (i32,)> = &Identity;
23     let (y,) = x.get((22,));
24     assert_eq!(y, 22);
25 }
26