diff options
| author | Jubilee <workingjubilee@gmail.com> | 2024-09-21 22:34:34 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-21 22:34:34 -0700 |
| commit | f314db6d6bf3f0fb8268334f2868a266c3587572 (patch) | |
| tree | 86d6524c6fd5da2b2dc39ca17e23b92558be9d33 | |
| parent | b0208640c68cf4b7d81d501499def6f1506962af (diff) | |
| parent | e62b5e64a3f5ad34259d8d6ae4ad031083fa6692 (diff) | |
| download | rust-f314db6d6bf3f0fb8268334f2868a266c3587572.tar.gz rust-f314db6d6bf3f0fb8268334f2868a266c3587572.zip | |
Rollup merge of #130669 - workingjubilee:slicing-fnptr-tests-finely, r=compiler-errors
tests: Test that `extern "C" fn` ptrs lint on slices This seems to have slipped past the `improper_ctypes_definitions` lint at some point. I found similar tests but not one with this exact combination, so test the semi-unique combination.
| -rw-r--r-- | tests/ui/lint/extern-C-fnptr-lints-slices.rs | 9 | ||||
| -rw-r--r-- | tests/ui/lint/extern-C-fnptr-lints-slices.stderr | 16 |
2 files changed, 25 insertions, 0 deletions
diff --git a/tests/ui/lint/extern-C-fnptr-lints-slices.rs b/tests/ui/lint/extern-C-fnptr-lints-slices.rs new file mode 100644 index 00000000000..0c35eb37a48 --- /dev/null +++ b/tests/ui/lint/extern-C-fnptr-lints-slices.rs @@ -0,0 +1,9 @@ +#[deny(improper_ctypes_definitions)] + +// It's an improper ctype (a slice) arg in an extern "C" fnptr. + +pub type F = extern "C" fn(&[u8]); +//~^ ERROR: `extern` fn uses type `[u8]`, which is not FFI-safe + + +fn main() {} diff --git a/tests/ui/lint/extern-C-fnptr-lints-slices.stderr b/tests/ui/lint/extern-C-fnptr-lints-slices.stderr new file mode 100644 index 00000000000..d13f93ca96f --- /dev/null +++ b/tests/ui/lint/extern-C-fnptr-lints-slices.stderr @@ -0,0 +1,16 @@ +error: `extern` fn uses type `[u8]`, which is not FFI-safe + --> $DIR/extern-C-fnptr-lints-slices.rs:5:14 + | +LL | pub type F = extern "C" fn(&[u8]); + | ^^^^^^^^^^^^^^^^^^^^ not FFI-safe + | + = help: consider using a raw pointer instead + = note: slices have no C equivalent +note: the lint level is defined here + --> $DIR/extern-C-fnptr-lints-slices.rs:1:8 + | +LL | #[deny(improper_ctypes_definitions)] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to 1 previous error + |
