]> git.lizzy.rs Git - rust.git/blob - src/test/ui/argument-suggestions/issue-100478.rs
Make some diagnostics not depend on the source of what they reference being available
[rust.git] / src / test / ui / argument-suggestions / issue-100478.rs
1 use std::sync::Arc;
2 macro_rules! GenT {
3     ($name:tt) => {
4         #[derive(Default, Debug)]
5         struct $name {
6             #[allow(unused)]
7             val: i32,
8         }
9
10         impl $name {
11             #[allow(unused)]
12             fn new(val: i32) -> Self {
13                 $name { val }
14             }
15         }
16     };
17 }
18
19 GenT!(T1);
20 GenT!(T2);
21 GenT!(T3);
22 GenT!(T4);
23 GenT!(T5);
24 GenT!(T6);
25 GenT!(T7);
26 GenT!(T8);
27
28 #[allow(unused)]
29 fn foo(p1: T1, p2: Arc<T2>, p3: T3, p4: Arc<T4>, p5: T5, p6: T6, p7: T7, p8: Arc<T8>) {}
30 fn three_diff(_a: T1, _b: T2, _c: T3) {}
31 fn four_shuffle(_a: T1, _b: T2, _c: T3, _d: T4) {}
32
33 fn main() {
34     three_diff(T2::new(0)); //~ ERROR this function takes
35     four_shuffle(T3::default(), T4::default(), T1::default(), T2::default()); //~ ERROR 35:5: 35:17: arguments to this function are incorrect [E0308]
36     four_shuffle(T3::default(), T2::default(), T1::default(), T3::default()); //~ ERROR 36:5: 36:17: arguments to this function are incorrect [E0308]
37
38     let p1 = T1::new(0);
39     let p2 = Arc::new(T2::new(0));
40     let p3 = T3::new(0);
41     let p4 = Arc::new(T4::new(1));
42     let p5 = T5::new(0);
43     let p6 = T6::new(0);
44     let p7 = T7::new(0);
45     let p8 = Arc::default();
46
47     foo(
48         //~^ 47:5: 47:8: this function takes 8 arguments but 7 arguments were supplied [E0061]
49         p1, //p2,
50         p3, p4, p5, p6, p7, p8,
51     );
52 }