| use std::sync::Arc; |
| macro_rules! GenT { |
| ($name:tt) => { |
| #[derive(Default, Debug)] |
| struct $name { |
| #[allow(unused)] |
| val: i32, |
| } |
| |
| impl $name { |
| #[allow(unused)] |
| fn new(val: i32) -> Self { |
| $name { val } |
| } |
| } |
| }; |
| } |
| |
| GenT!(T1); |
| GenT!(T2); |
| GenT!(T3); |
| GenT!(T4); |
| GenT!(T5); |
| GenT!(T6); |
| GenT!(T7); |
| GenT!(T8); |
| |
| #[allow(unused)] |
| fn foo(p1: T1, p2: Arc<T2>, p3: T3, p4: Arc<T4>, p5: T5, p6: T6, p7: T7, p8: Arc<T8>) {} |
| fn three_diff(_a: T1, _b: T2, _c: T3) {} |
| fn four_shuffle(_a: T1, _b: T2, _c: T3, _d: T4) {} |
| |
| fn main() { |
| three_diff(T2::new(0)); //~ ERROR function takes |
| four_shuffle(T3::default(), T4::default(), T1::default(), T2::default()); //~ ERROR 35:5: 35:17: arguments to this function are incorrect [E0308] |
| four_shuffle(T3::default(), T2::default(), T1::default(), T3::default()); //~ ERROR 36:5: 36:17: arguments to this function are incorrect [E0308] |
| |
| let p1 = T1::new(0); |
| let p2 = Arc::new(T2::new(0)); |
| let p3 = T3::new(0); |
| let p4 = Arc::new(T4::new(1)); |
| let p5 = T5::new(0); |
| let p6 = T6::new(0); |
| let p7 = T7::new(0); |
| let p8 = Arc::default(); |
| |
| foo( |
| //~^ 47:5: 47:8: this function takes 8 arguments but 7 arguments were supplied [E0061] |
| p1, //p2, |
| p3, p4, p5, p6, p7, p8, |
| ); |
| } |