add test for str as extern "C" arg causes compiler panic #80125
Fixes #80125
This commit is contained in:
parent
a5ad0be52f
commit
19310ce2cc
15
tests/ui/extern/extern-C-str-arg-ice-80125.rs
vendored
Normal file
15
tests/ui/extern/extern-C-str-arg-ice-80125.rs
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
// test for #80125
|
||||
//@ check-pass
|
||||
type ExternCallback = extern "C" fn(*const u8, u32, str);
|
||||
//~^ WARN `extern` fn uses type `str`, which is not FFI-safe
|
||||
|
||||
pub struct Struct(ExternCallback);
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn register_something(bind: ExternCallback) -> Struct {
|
||||
//~^ WARN `extern` fn uses type `str`, which is not FFI-safe
|
||||
//~^^ WARN `extern` fn uses type `Struct`, which is not FFI-safe
|
||||
Struct(bind)
|
||||
}
|
||||
|
||||
fn main() {}
|
35
tests/ui/extern/extern-C-str-arg-ice-80125.stderr
vendored
Normal file
35
tests/ui/extern/extern-C-str-arg-ice-80125.stderr
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
warning: `extern` fn uses type `str`, which is not FFI-safe
|
||||
--> $DIR/extern-C-str-arg-ice-80125.rs:3:23
|
||||
|
|
||||
LL | type ExternCallback = extern "C" fn(*const u8, u32, str);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
|
||||
|
|
||||
= help: consider using `*const u8` and a length instead
|
||||
= note: string slices have no C equivalent
|
||||
= note: `#[warn(improper_ctypes_definitions)]` on by default
|
||||
|
||||
warning: `extern` fn uses type `str`, which is not FFI-safe
|
||||
--> $DIR/extern-C-str-arg-ice-80125.rs:9:44
|
||||
|
|
||||
LL | pub extern "C" fn register_something(bind: ExternCallback) -> Struct {
|
||||
| ^^^^^^^^^^^^^^ not FFI-safe
|
||||
|
|
||||
= help: consider using `*const u8` and a length instead
|
||||
= note: string slices have no C equivalent
|
||||
|
||||
warning: `extern` fn uses type `Struct`, which is not FFI-safe
|
||||
--> $DIR/extern-C-str-arg-ice-80125.rs:9:63
|
||||
|
|
||||
LL | pub extern "C" fn register_something(bind: ExternCallback) -> Struct {
|
||||
| ^^^^^^ not FFI-safe
|
||||
|
|
||||
= help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct
|
||||
= note: this struct has unspecified layout
|
||||
note: the type is defined here
|
||||
--> $DIR/extern-C-str-arg-ice-80125.rs:6:1
|
||||
|
|
||||
LL | pub struct Struct(ExternCallback);
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: 3 warnings emitted
|
||||
|
Loading…
Reference in New Issue
Block a user