Skip to content

Commit

Permalink
Rollup merge of rust-lang#68370 - Aaron1011:const-extern-test, r=Ralf…
Browse files Browse the repository at this point in the history
…Jung

Ensure that we error when calling "const extern fn" with wrong convention

See rust-lang#64926
  • Loading branch information
pietroalbini committed Jan 27, 2020
2 parents c8d5f4d + 4a65032 commit 7e82434
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/test/ui/consts/miri_unleashed/abi-mismatch.rs
Original file line number Diff line number Diff line change
@@ -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() {}
28 changes: 28 additions & 0 deletions src/test/ui/consts/miri_unleashed/abi-mismatch.stderr
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 7e82434

Please sign in to comment.