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