diff options
Diffstat (limited to 'tests/ui/c-variadic/variadic-ffi-1.stderr')
-rw-r--r-- | tests/ui/c-variadic/variadic-ffi-1.stderr | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/tests/ui/c-variadic/variadic-ffi-1.stderr b/tests/ui/c-variadic/variadic-ffi-1.stderr new file mode 100644 index 000000000..4beea83d8 --- /dev/null +++ b/tests/ui/c-variadic/variadic-ffi-1.stderr @@ -0,0 +1,100 @@ +error[E0045]: C-variadic function must have a compatible calling convention, like `C` or `cdecl` + --> $DIR/variadic-ffi-1.rs:9:5 + | +LL | fn printf(_: *const u8, ...); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ C-variadic function must have a compatible calling convention + +error[E0060]: this function takes at least 2 arguments but 0 arguments were supplied + --> $DIR/variadic-ffi-1.rs:22:9 + | +LL | foo(); + | ^^^-- two arguments of type `isize` and `u8` are missing + | +note: function defined here + --> $DIR/variadic-ffi-1.rs:15:8 + | +LL | fn foo(f: isize, x: u8, ...); + | ^^^ +help: provide the arguments + | +LL | foo(/* isize */, /* u8 */); + | ~~~~~~~~~~~~~~~~~~~~~~~ + +error[E0060]: this function takes at least 2 arguments but 1 argument was supplied + --> $DIR/variadic-ffi-1.rs:23:9 + | +LL | foo(1); + | ^^^--- an argument of type `u8` is missing + | +note: function defined here + --> $DIR/variadic-ffi-1.rs:15:8 + | +LL | fn foo(f: isize, x: u8, ...); + | ^^^ +help: provide the argument + | +LL | foo(1, /* u8 */); + | ~~~~~~~~~~~~~ + +error[E0308]: mismatched types + --> $DIR/variadic-ffi-1.rs:25:56 + | +LL | let x: unsafe extern "C" fn(f: isize, x: u8) = foo; + | ------------------------------------- ^^^ expected non-variadic fn, found variadic function + | | + | expected due to this + | + = note: expected fn pointer `unsafe extern "C" fn(_, _)` + found fn item `unsafe extern "C" fn(_, _, ...) {foo}` + +error[E0308]: mismatched types + --> $DIR/variadic-ffi-1.rs:26:54 + | +LL | let y: extern "C" fn(f: isize, x: u8, ...) = bar; + | ----------------------------------- ^^^ expected variadic fn, found non-variadic function + | | + | expected due to this + | + = note: expected fn pointer `extern "C" fn(_, _, ...)` + found fn item `extern "C" fn(_, _) {bar}` + +error[E0617]: can't pass `f32` to variadic function + --> $DIR/variadic-ffi-1.rs:28:19 + | +LL | foo(1, 2, 3f32); + | ^^^^ help: cast the value to `c_double`: `3f32 as c_double` + +error[E0617]: can't pass `bool` to variadic function + --> $DIR/variadic-ffi-1.rs:29:19 + | +LL | foo(1, 2, true); + | ^^^^ help: cast the value to `c_int`: `true as c_int` + +error[E0617]: can't pass `i8` to variadic function + --> $DIR/variadic-ffi-1.rs:30:19 + | +LL | foo(1, 2, 1i8); + | ^^^ help: cast the value to `c_int`: `1i8 as c_int` + +error[E0617]: can't pass `u8` to variadic function + --> $DIR/variadic-ffi-1.rs:31:19 + | +LL | foo(1, 2, 1u8); + | ^^^ help: cast the value to `c_uint`: `1u8 as c_uint` + +error[E0617]: can't pass `i16` to variadic function + --> $DIR/variadic-ffi-1.rs:32:19 + | +LL | foo(1, 2, 1i16); + | ^^^^ help: cast the value to `c_int`: `1i16 as c_int` + +error[E0617]: can't pass `u16` to variadic function + --> $DIR/variadic-ffi-1.rs:33:19 + | +LL | foo(1, 2, 1u16); + | ^^^^ help: cast the value to `c_uint`: `1u16 as c_uint` + +error: aborting due to 11 previous errors + +Some errors have detailed explanations: E0045, E0060, E0308, E0617. +For more information about an error, try `rustc --explain E0045`. |