diff options
| author | Ralf Jung <post@ralfj.de> | 2023-09-02 13:19:40 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2023-09-08 08:59:55 +0200 |
| commit | 02217d1a1638ffd836afd6736d6cd0e4d4e469aa (patch) | |
| tree | 267d53c7e0d5a9b08ba55f6ba8c7a6bad3d9ce9a | |
| parent | c3e14edd8b7cbb502002a2390bf0ca5c6d09a315 (diff) | |
| download | rust-02217d1a1638ffd836afd6736d6cd0e4d4e469aa.tar.gz rust-02217d1a1638ffd836afd6736d6cd0e4d4e469aa.zip | |
add tests for RFC 3391
| -rw-r--r-- | tests/ui/abi/compatibility.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/ui/abi/compatibility.rs b/tests/ui/abi/compatibility.rs index 0bf218730ba..064d765368e 100644 --- a/tests/ui/abi/compatibility.rs +++ b/tests/ui/abi/compatibility.rs @@ -73,4 +73,29 @@ test_abi_compatible!(zst_unit, Zst, ()); test_abi_compatible!(zst_array, Zst, [u8; 0]); test_abi_compatible!(nonzero_int, NonZeroI32, i32); +// RFC 3391 <https://rust-lang.github.io/rfcs/3391-result_ffi_guarantees.html>. +macro_rules! test_nonnull { + ($name:ident, $t:ty) => { + mod $name { + use super::*; + test_abi_compatible!(option, Option<$t>, $t); + test_abi_compatible!(result_err_unit, Result<$t, ()>, $t); + test_abi_compatible!(result_ok_unit, Result<(), $t>, $t); + test_abi_compatible!(result_err_zst, Result<$t, Zst>, $t); + test_abi_compatible!(result_ok_zst, Result<Zst, $t>, $t); + test_abi_compatible!(result_err_arr, Result<$t, [i8; 0]>, $t); + test_abi_compatible!(result_ok_arr, Result<[i8; 0], $t>, $t); + } + } +} + +test_nonnull!(ref_, &i32); +test_nonnull!(mut_, &mut i32); +test_nonnull!(ref_unsized, &[i32]); +test_nonnull!(mut_unsized, &mut [i32]); +test_nonnull!(fn_, fn()); +test_nonnull!(nonnull, NonNull<i32>); +test_nonnull!(nonnull_unsized, NonNull<dyn std::fmt::Debug>); +test_nonnull!(non_zero, NonZeroI32); + fn main() {} |
