]> git.lizzy.rs Git - rust.git/blob - src/test/ui/parser/variadic-ffi-semantic-restrictions.rs
Merge commit '4bdfb0741dbcecd5279a2635c3280726db0604b5' into clippyup
[rust.git] / src / test / ui / parser / variadic-ffi-semantic-restrictions.rs
1 #![feature(c_variadic)]
2 #![allow(anonymous_parameters)]
3
4 fn main() {}
5
6 fn f1_1(x: isize, ...) {}
7 //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
8
9 fn f1_2(...) {}
10 //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
11 //~| ERROR C-variadic function must be declared with at least one named argument
12
13 extern "C" fn f2_1(x: isize, ...) {}
14 //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
15
16 extern "C" fn f2_2(...) {}
17 //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
18 //~| ERROR C-variadic function must be declared with at least one named argument
19
20 extern "C" fn f2_3(..., x: isize) {}
21 //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
22 //~| ERROR `...` must be the last argument of a C-variadic function
23
24 extern "C" fn f3_1(x: isize, ...) {}
25 //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
26
27 extern "C" fn f3_2(...) {}
28 //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
29 //~| ERROR C-variadic function must be declared with at least one named argument
30
31 extern "C" fn f3_3(..., x: isize) {}
32 //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
33 //~| ERROR `...` must be the last argument of a C-variadic function
34
35 extern "C" {
36     fn e_f1(...);
37     //~^ ERROR C-variadic function must be declared with at least one named argument
38     fn e_f2(..., x: isize);
39 //~^ ERROR `...` must be the last argument of a C-variadic function
40 }
41
42 struct X;
43
44 impl X {
45     fn i_f1(x: isize, ...) {}
46     //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
47     fn i_f2(...) {}
48     //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
49     //~| ERROR C-variadic function must be declared with at least one named argument
50     fn i_f3(..., x: isize, ...) {}
51     //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
52     //~| ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
53     //~| ERROR `...` must be the last argument of a C-variadic function
54     fn i_f4(..., x: isize, ...) {}
55     //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
56     //~| ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
57     //~| ERROR `...` must be the last argument of a C-variadic function
58 }
59
60 trait T {
61     fn t_f1(x: isize, ...) {}
62     //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
63     fn t_f2(x: isize, ...);
64     //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
65     fn t_f3(...) {}
66     //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
67     //~| ERROR C-variadic function must be declared with at least one named argument
68     fn t_f4(...);
69     //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
70     //~| ERROR C-variadic function must be declared with at least one named argument
71     fn t_f5(..., x: isize) {}
72     //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
73     //~| ERROR `...` must be the last argument of a C-variadic function
74     fn t_f6(..., x: isize);
75     //~^ ERROR only foreign or `unsafe extern "C"` functions may be C-variadic
76     //~| ERROR `...` must be the last argument of a C-variadic function
77 }