File tree Expand file tree Collapse file tree 2 files changed +50
-0
lines changed Expand file tree Collapse file tree 2 files changed +50
-0
lines changed Original file line number Diff line number Diff line change 1+ // test for #80125
2+ //@ check-pass
3+ type ExternCallback = extern "C" fn ( * const u8 , u32 , str ) ;
4+ //~^ WARN `extern` fn uses type `str`, which is not FFI-safe
5+
6+ pub struct Struct ( ExternCallback ) ;
7+
8+ #[ no_mangle]
9+ pub extern "C" fn register_something ( bind : ExternCallback ) -> Struct {
10+ //~^ WARN `extern` fn uses type `str`, which is not FFI-safe
11+ //~^^ WARN `extern` fn uses type `Struct`, which is not FFI-safe
12+ Struct ( bind)
13+ }
14+
15+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ warning: `extern` fn uses type `str`, which is not FFI-safe
2+ --> $DIR/extern-C-str-arg-ice-80125.rs:3:23
3+ |
4+ LL | type ExternCallback = extern "C" fn(*const u8, u32, str);
5+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
6+ |
7+ = help: consider using `*const u8` and a length instead
8+ = note: string slices have no C equivalent
9+ = note: `#[warn(improper_ctypes_definitions)]` on by default
10+
11+ warning: `extern` fn uses type `str`, which is not FFI-safe
12+ --> $DIR/extern-C-str-arg-ice-80125.rs:9:44
13+ |
14+ LL | pub extern "C" fn register_something(bind: ExternCallback) -> Struct {
15+ | ^^^^^^^^^^^^^^ not FFI-safe
16+ |
17+ = help: consider using `*const u8` and a length instead
18+ = note: string slices have no C equivalent
19+
20+ warning: `extern` fn uses type `Struct`, which is not FFI-safe
21+ --> $DIR/extern-C-str-arg-ice-80125.rs:9:63
22+ |
23+ LL | pub extern "C" fn register_something(bind: ExternCallback) -> Struct {
24+ | ^^^^^^ not FFI-safe
25+ |
26+ = help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct
27+ = note: this struct has unspecified layout
28+ note: the type is defined here
29+ --> $DIR/extern-C-str-arg-ice-80125.rs:6:1
30+ |
31+ LL | pub struct Struct(ExternCallback);
32+ | ^^^^^^^^^^^^^^^^^
33+
34+ warning: 3 warnings emitted
35+
You can’t perform that action at this time.
0 commit comments