warning: `clash` redeclared with a different signature
- --> $DIR/clashing-extern-fn.rs:14:13
+ --> $DIR/clashing-extern-fn.rs:15:13
|
LL | fn clash(x: u8);
| ---------------- `clash` previously declared here
| ^^^^^^^^^^^^^^^^^ this signature doesn't match the previous declaration
|
note: the lint level is defined here
- --> $DIR/clashing-extern-fn.rs:4:9
+ --> $DIR/clashing-extern-fn.rs:5:9
|
LL | #![warn(clashing_extern_declarations)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
found `unsafe extern "C" fn(u64)`
warning: `extern_link_name` redeclared with a different signature
- --> $DIR/clashing-extern-fn.rs:52:9
+ --> $DIR/clashing-extern-fn.rs:53:9
|
LL | / #[link_name = "extern_link_name"]
LL | | fn some_new_name(x: i16);
found `unsafe extern "C" fn(u32)`
warning: `some_other_extern_link_name` redeclares `some_other_new_name` with a different signature
- --> $DIR/clashing-extern-fn.rs:55:9
+ --> $DIR/clashing-extern-fn.rs:56:9
|
LL | fn some_other_new_name(x: i16);
| ------------------------------- `some_other_new_name` previously declared here
found `unsafe extern "C" fn(u32)`
warning: `other_both_names_different` redeclares `link_name_same` with a different signature
- --> $DIR/clashing-extern-fn.rs:59:9
+ --> $DIR/clashing-extern-fn.rs:60:9
|
LL | / #[link_name = "link_name_same"]
LL | | fn both_names_different(x: i16);
found `unsafe extern "C" fn(u32)`
warning: `different_mod` redeclared with a different signature
- --> $DIR/clashing-extern-fn.rs:72:9
+ --> $DIR/clashing-extern-fn.rs:73:9
|
LL | fn different_mod(x: u8);
| ------------------------ `different_mod` previously declared here
found `unsafe extern "C" fn(u64)`
warning: `variadic_decl` redeclared with a different signature
- --> $DIR/clashing-extern-fn.rs:82:9
+ --> $DIR/clashing-extern-fn.rs:83:9
|
LL | fn variadic_decl(x: u8, ...);
| ----------------------------- `variadic_decl` previously declared here
found `unsafe extern "C" fn(u8)`
warning: `weigh_banana` redeclared with a different signature
- --> $DIR/clashing-extern-fn.rs:142:13
+ --> $DIR/clashing-extern-fn.rs:143:13
|
LL | fn weigh_banana(count: *const Banana) -> u64;
| --------------------------------------------- `weigh_banana` previously declared here
found `unsafe extern "C" fn(*const three::Banana) -> u64`
warning: `draw_point` redeclared with a different signature
- --> $DIR/clashing-extern-fn.rs:171:13
+ --> $DIR/clashing-extern-fn.rs:172:13
|
LL | fn draw_point(p: Point);
| ------------------------ `draw_point` previously declared here
found `unsafe extern "C" fn(sameish_members::b::Point)`
warning: `origin` redeclared with a different signature
- --> $DIR/clashing-extern-fn.rs:197:13
+ --> $DIR/clashing-extern-fn.rs:198:13
|
LL | fn origin() -> Point3;
| ---------------------- `origin` previously declared here
found `unsafe extern "C" fn() -> same_sized_members_clash::b::Point3`
warning: `transparent_incorrect` redeclared with a different signature
- --> $DIR/clashing-extern-fn.rs:220:13
+ --> $DIR/clashing-extern-fn.rs:221:13
|
LL | fn transparent_incorrect() -> T;
| -------------------------------- `transparent_incorrect` previously declared here
found `unsafe extern "C" fn() -> isize`
warning: `missing_return_type` redeclared with a different signature
- --> $DIR/clashing-extern-fn.rs:238:13
+ --> $DIR/clashing-extern-fn.rs:239:13
|
LL | fn missing_return_type() -> usize;
| ---------------------------------- `missing_return_type` previously declared here
found `unsafe extern "C" fn()`
warning: `non_zero_usize` redeclared with a different signature
- --> $DIR/clashing-extern-fn.rs:256:13
+ --> $DIR/clashing-extern-fn.rs:257:13
|
LL | fn non_zero_usize() -> core::num::NonZeroUsize;
| ----------------------------------------------- `non_zero_usize` previously declared here
found `unsafe extern "C" fn() -> usize`
warning: `non_null_ptr` redeclared with a different signature
- --> $DIR/clashing-extern-fn.rs:258:13
+ --> $DIR/clashing-extern-fn.rs:259:13
|
LL | fn non_null_ptr() -> core::ptr::NonNull<usize>;
| ----------------------------------------------- `non_null_ptr` previously declared here
found `unsafe extern "C" fn() -> *const usize`
warning: `option_non_zero_usize_incorrect` redeclared with a different signature
- --> $DIR/clashing-extern-fn.rs:356:13
+ --> $DIR/clashing-extern-fn.rs:357:13
|
LL | fn option_non_zero_usize_incorrect() -> usize;
| ---------------------------------------------- `option_non_zero_usize_incorrect` previously declared here
found `unsafe extern "C" fn() -> isize`
warning: `option_non_null_ptr_incorrect` redeclared with a different signature
- --> $DIR/clashing-extern-fn.rs:358:13
+ --> $DIR/clashing-extern-fn.rs:359:13
|
LL | fn option_non_null_ptr_incorrect() -> *const usize;
| --------------------------------------------------- `option_non_null_ptr_incorrect` previously declared here
= note: expected `unsafe extern "C" fn() -> *const usize`
found `unsafe extern "C" fn() -> *const isize`
-warning: 15 warnings emitted
+warning: `hidden_niche_transparent_no_niche` redeclared with a different signature
+ --> $DIR/clashing-extern-fn.rs:410:13
+ |
+LL | fn hidden_niche_transparent_no_niche() -> usize;
+ | ------------------------------------------------ `hidden_niche_transparent_no_niche` previously declared here
+...
+LL | fn hidden_niche_transparent_no_niche() -> Option<TransparentNoNiche>;
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this signature doesn't match the previous declaration
+ |
+ = note: expected `unsafe extern "C" fn() -> usize`
+ found `unsafe extern "C" fn() -> Option<TransparentNoNiche>`
+
+warning: `hidden_niche_unsafe_cell` redeclared with a different signature
+ --> $DIR/clashing-extern-fn.rs:414:13
+ |
+LL | fn hidden_niche_unsafe_cell() -> usize;
+ | --------------------------------------- `hidden_niche_unsafe_cell` previously declared here
+...
+LL | fn hidden_niche_unsafe_cell() -> Option<UnsafeCell<NonZeroUsize>>;
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this signature doesn't match the previous declaration
+ |
+ = note: expected `unsafe extern "C" fn() -> usize`
+ found `unsafe extern "C" fn() -> Option<UnsafeCell<NonZeroUsize>>`
+
+warning: `extern` block uses type `Option<TransparentNoNiche>`, which is not FFI-safe
+ --> $DIR/clashing-extern-fn.rs:410:55
+ |
+LL | fn hidden_niche_transparent_no_niche() -> Option<TransparentNoNiche>;
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
+ |
+ = note: `#[warn(improper_ctypes)]` on by default
+ = help: consider adding a `#[repr(C)]`, `#[repr(transparent)]`, or integer `#[repr(...)]` attribute to this enum
+ = note: enum has no representation hint
+
+warning: `extern` block uses type `Option<UnsafeCell<NonZeroUsize>>`, which is not FFI-safe
+ --> $DIR/clashing-extern-fn.rs:414:46
+ |
+LL | fn hidden_niche_unsafe_cell() -> Option<UnsafeCell<NonZeroUsize>>;
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
+ |
+ = help: consider adding a `#[repr(C)]`, `#[repr(transparent)]`, or integer `#[repr(...)]` attribute to this enum
+ = note: enum has no representation hint
+
+warning: 19 warnings emitted