diff options
| author | Pietro Albini <pietro@pietroalbini.org> | 2020-01-27 12:50:49 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-27 12:50:49 +0100 |
| commit | 7e824343d32b985b7159cd1872a291cfc33265ce (patch) | |
| tree | b7f702a6990ba3d2c0631a85b554551928e136a7 | |
| parent | c8d5f4dcd120c16099ea85eb32588538d4faa14b (diff) | |
| parent | 4a650324f83d3a903f740197af972bfa9f95d41a (diff) | |
| download | rust-7e824343d32b985b7159cd1872a291cfc33265ce.tar.gz rust-7e824343d32b985b7159cd1872a291cfc33265ce.zip | |
Rollup merge of #68370 - Aaron1011:const-extern-test, r=RalfJung
Ensure that we error when calling "const extern fn" with wrong convention See #64926
| -rw-r--r-- | src/test/ui/consts/miri_unleashed/abi-mismatch.rs | 16 | ||||
| -rw-r--r-- | src/test/ui/consts/miri_unleashed/abi-mismatch.stderr | 28 |
2 files changed, 44 insertions, 0 deletions
diff --git a/src/test/ui/consts/miri_unleashed/abi-mismatch.rs b/src/test/ui/consts/miri_unleashed/abi-mismatch.rs new file mode 100644 index 00000000000..d8e63b0bfb2 --- /dev/null +++ b/src/test/ui/consts/miri_unleashed/abi-mismatch.rs @@ -0,0 +1,16 @@ +// Checks that we report ABI mismatches for "const extern fn" +// compile-flags: -Z unleash-the-miri-inside-of-you + +#![feature(const_extern_fn)] + +const extern "C" fn c_fn() {} + +const fn call_rust_fn(my_fn: extern "Rust" fn()) { + my_fn(); //~ ERROR any use of this value will cause an error + //~^ WARN skipping const checks +} + +const VAL: () = call_rust_fn(unsafe { std::mem::transmute(c_fn as extern "C" fn()) }); +//~^ WARN skipping const checks + +fn main() {} diff --git a/src/test/ui/consts/miri_unleashed/abi-mismatch.stderr b/src/test/ui/consts/miri_unleashed/abi-mismatch.stderr new file mode 100644 index 00000000000..da00c49963e --- /dev/null +++ b/src/test/ui/consts/miri_unleashed/abi-mismatch.stderr @@ -0,0 +1,28 @@ +warning: skipping const checks + --> $DIR/abi-mismatch.rs:9:5 + | +LL | my_fn(); + | ^^^^^^^ + +warning: skipping const checks + --> $DIR/abi-mismatch.rs:13:39 + | +LL | const VAL: () = call_rust_fn(unsafe { std::mem::transmute(c_fn as extern "C" fn()) }); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: any use of this value will cause an error + --> $DIR/abi-mismatch.rs:9:5 + | +LL | my_fn(); + | ^^^^^^^ + | | + | tried to call a function with ABI C using caller ABI Rust + | inside call to `call_rust_fn` at $DIR/abi-mismatch.rs:13:17 +... +LL | const VAL: () = call_rust_fn(unsafe { std::mem::transmute(c_fn as extern "C" fn()) }); + | -------------------------------------------------------------------------------------- + | + = note: `#[deny(const_err)]` on by default + +error: aborting due to previous error + |
