summaryrefslogtreecommitdiffstats
path: root/tests/ui/lint/clashing-extern-fn.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/lint/clashing-extern-fn.rs')
-rw-r--r--tests/ui/lint/clashing-extern-fn.rs33
1 files changed, 29 insertions, 4 deletions
diff --git a/tests/ui/lint/clashing-extern-fn.rs b/tests/ui/lint/clashing-extern-fn.rs
index 809e06026..09fda33db 100644
--- a/tests/ui/lint/clashing-extern-fn.rs
+++ b/tests/ui/lint/clashing-extern-fn.rs
@@ -122,8 +122,8 @@ mod banana {
weight: u32,
length: u16,
} // note: distinct type
- // This should not trigger the lint because two::Banana is structurally equivalent to
- // one::Banana.
+ // This should not trigger the lint because two::Banana is structurally equivalent to
+ // one::Banana.
extern "C" {
fn weigh_banana(count: *const Banana) -> u64;
}
@@ -223,6 +223,27 @@ mod transparent {
}
}
+#[allow(improper_ctypes)]
+mod zst {
+ mod transparent {
+ #[repr(transparent)]
+ struct TransparentZst(());
+ extern "C" {
+ fn zst() -> ();
+ fn transparent_zst() -> TransparentZst;
+ }
+ }
+
+ mod not_transparent {
+ struct NotTransparentZst(());
+ extern "C" {
+ // These shouldn't warn since all return types are zero sized
+ fn zst() -> NotTransparentZst;
+ fn transparent_zst() -> NotTransparentZst;
+ }
+ }
+}
+
mod missing_return_type {
mod a {
extern "C" {
@@ -397,10 +418,14 @@ mod hidden_niche {
use std::num::NonZeroUsize;
#[repr(transparent)]
- struct Transparent { x: NonZeroUsize }
+ struct Transparent {
+ x: NonZeroUsize,
+ }
#[repr(transparent)]
- struct TransparentNoNiche { y: UnsafeCell<NonZeroUsize> }
+ struct TransparentNoNiche {
+ y: UnsafeCell<NonZeroUsize>,
+ }
extern "C" {
fn hidden_niche_transparent() -> Option<Transparent>;