Fix test redux
This commit is contained in:
parent
864f6d180b
commit
ffb827aff3
@ -293,7 +293,7 @@ fn report_cast_error(&self, fcx: &FnCtxt<'a, 'gcx, 'tcx>, e: CastError) {
|
||||
if fcx.tcx.sess.opts.debugging_opts.explain
|
||||
&& !fcx.tcx.sess.parse_sess.span_diagnostic
|
||||
.code_emitted(&err.get_code().unwrap()) {
|
||||
err.note(
|
||||
err.help(
|
||||
"Thin pointers are \"simple\" pointers: they are purely a reference to a
|
||||
memory address.
|
||||
|
||||
@ -301,13 +301,13 @@ fn report_cast_error(&self, fcx: &FnCtxt<'a, 'gcx, 'tcx>, e: CastError) {
|
||||
called DST). DST don't have a statically known size, therefore they can
|
||||
only exist behind some kind of pointers that contain additional
|
||||
information. Slices and trait objects are DSTs. In the case of slices,
|
||||
the additional information the fat pointer holds is their size.");
|
||||
err.note("to fix this error, don't try to cast directly between thin and fat \
|
||||
pointers");
|
||||
err.help("for more information about casts, take a look at
|
||||
[The Book]\
|
||||
(https://doc.rust-lang.org/book/first-edition/\
|
||||
casting-between-types.html)");
|
||||
the additional information the fat pointer holds is their size.
|
||||
|
||||
To fix this error, don't try to cast directly between thin and fat
|
||||
pointers.
|
||||
|
||||
For more information about casts, take a look at The Book:
|
||||
https://doc.rust-lang.org/book/first-edition/casting-between-types.html");
|
||||
}
|
||||
err.emit();
|
||||
}
|
||||
|
@ -17,16 +17,22 @@
|
||||
fn main() {
|
||||
unsafe {
|
||||
printf(::std::ptr::null(), 0f32);
|
||||
//~^ ERROR can't pass `f32` to variadic function, cast to `c_double` [E0617]
|
||||
//~^ ERROR can't pass `f32` to variadic function
|
||||
//~| HELP cast the value to `c_double`
|
||||
printf(::std::ptr::null(), 0i8);
|
||||
//~^ ERROR can't pass `i8` to variadic function, cast to `c_int` [E0617]
|
||||
//~^ ERROR can't pass `i8` to variadic function
|
||||
//~| HELP cast the value to `c_int`
|
||||
printf(::std::ptr::null(), 0i16);
|
||||
//~^ ERROR can't pass `i16` to variadic function, cast to `c_int` [E0617]
|
||||
//~^ ERROR can't pass `i16` to variadic function
|
||||
//~| HELP cast the value to `c_int`
|
||||
printf(::std::ptr::null(), 0u8);
|
||||
//~^ ERROR can't pass `u8` to variadic function, cast to `c_uint` [E0617]
|
||||
//~^ ERROR can't pass `u8` to variadic function
|
||||
//~| HELP cast the value to `c_uint`
|
||||
printf(::std::ptr::null(), 0u16);
|
||||
//~^ ERROR can't pass `u16` to variadic function, cast to `c_uint` [E0617]
|
||||
//~^ ERROR can't pass `u16` to variadic function
|
||||
//~| HELP cast the value to `c_uint`
|
||||
printf(::std::ptr::null(), printf);
|
||||
//~^ ERROR can't pass `unsafe extern "C" fn(*const i8, ...) {printf}` to variadic function, cast to `unsafe extern "C" fn(*const i8, ...)` [E0617]
|
||||
//~^ ERROR can't pass `unsafe extern "C" fn(*const i8, ...) {printf}` to variadic function
|
||||
//~| HELP cast the value to `unsafe extern "C" fn(*const i8, ...)`
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ fn bar(_: *const u8) {}
|
||||
fn main() {
|
||||
unsafe {
|
||||
foo(0, bar);
|
||||
//~^ ERROR can't pass `fn(*const u8) {bar}` to variadic function, cast to `fn(*const u8)`
|
||||
//~^ ERROR can't pass `fn(*const u8) {bar}` to variadic function
|
||||
//~| HELP cast the value to `fn(*const u8)`
|
||||
}
|
||||
}
|
||||
|
@ -31,11 +31,11 @@ fn main() {
|
||||
//~| expected type `extern "C" fn(isize, u8, ...)`
|
||||
//~| found type `extern "C" fn(isize, u8) {bar}`
|
||||
|
||||
foo(1, 2, 3f32); //~ ERROR can't pass `f32` to variadic function, cast to `c_double`
|
||||
foo(1, 2, true); //~ ERROR can't pass `bool` to variadic function, cast to `c_int`
|
||||
foo(1, 2, 1i8); //~ ERROR can't pass `i8` to variadic function, cast to `c_int`
|
||||
foo(1, 2, 1u8); //~ ERROR can't pass `u8` to variadic function, cast to `c_uint`
|
||||
foo(1, 2, 1i16); //~ ERROR can't pass `i16` to variadic function, cast to `c_int`
|
||||
foo(1, 2, 1u16); //~ ERROR can't pass `u16` to variadic function, cast to `c_uint`
|
||||
foo(1, 2, 3f32); //~ ERROR can't pass `f32` to variadic function
|
||||
foo(1, 2, true); //~ ERROR can't pass `bool` to variadic function
|
||||
foo(1, 2, 1i8); //~ ERROR can't pass `i8` to variadic function
|
||||
foo(1, 2, 1u8); //~ ERROR can't pass `u8` to variadic function
|
||||
foo(1, 2, 1i16); //~ ERROR can't pass `i16` to variadic function
|
||||
foo(1, 2, 1u16); //~ ERROR can't pass `u16` to variadic function
|
||||
}
|
||||
}
|
||||
|
@ -37,37 +37,37 @@ error[E0308]: mismatched types
|
||||
error[E0617]: can't pass `f32` to variadic function
|
||||
--> $DIR/variadic-ffi-3.rs:34:19
|
||||
|
|
||||
34 | foo(1, 2, 3f32); //~ ERROR can't pass `f32` to variadic function, cast to `c_double`
|
||||
34 | foo(1, 2, 3f32); //~ ERROR can't pass `f32` to variadic function
|
||||
| ^^^^ help: cast the value to `c_double`: `3f32 as c_double`
|
||||
|
||||
error[E0617]: can't pass `bool` to variadic function
|
||||
--> $DIR/variadic-ffi-3.rs:35:19
|
||||
|
|
||||
35 | foo(1, 2, true); //~ ERROR can't pass `bool` to variadic function, cast to `c_int`
|
||||
35 | foo(1, 2, true); //~ ERROR can't pass `bool` to variadic function
|
||||
| ^^^^ help: cast the value to `c_int`: `true as c_int`
|
||||
|
||||
error[E0617]: can't pass `i8` to variadic function
|
||||
--> $DIR/variadic-ffi-3.rs:36:19
|
||||
|
|
||||
36 | foo(1, 2, 1i8); //~ ERROR can't pass `i8` to variadic function, cast to `c_int`
|
||||
36 | foo(1, 2, 1i8); //~ ERROR can't pass `i8` to variadic function
|
||||
| ^^^ help: cast the value to `c_int`: `1i8 as c_int`
|
||||
|
||||
error[E0617]: can't pass `u8` to variadic function
|
||||
--> $DIR/variadic-ffi-3.rs:37:19
|
||||
|
|
||||
37 | foo(1, 2, 1u8); //~ ERROR can't pass `u8` to variadic function, cast to `c_uint`
|
||||
37 | foo(1, 2, 1u8); //~ ERROR can't pass `u8` to variadic function
|
||||
| ^^^ help: cast the value to `c_uint`: `1u8 as c_uint`
|
||||
|
||||
error[E0617]: can't pass `i16` to variadic function
|
||||
--> $DIR/variadic-ffi-3.rs:38:19
|
||||
|
|
||||
38 | foo(1, 2, 1i16); //~ ERROR can't pass `i16` to variadic function, cast to `c_int`
|
||||
38 | foo(1, 2, 1i16); //~ ERROR can't pass `i16` to variadic function
|
||||
| ^^^^ help: cast the value to `c_int`: `1i16 as c_int`
|
||||
|
||||
error[E0617]: can't pass `u16` to variadic function
|
||||
--> $DIR/variadic-ffi-3.rs:39:19
|
||||
|
|
||||
39 | foo(1, 2, 1u16); //~ ERROR can't pass `u16` to variadic function, cast to `c_uint`
|
||||
39 | foo(1, 2, 1u16); //~ ERROR can't pass `u16` to variadic function
|
||||
| ^^^^ help: cast the value to `c_uint`: `1u16 as c_uint`
|
||||
|
||||
error: aborting due to 10 previous errors
|
||||
|
Loading…
Reference in New Issue
Block a user