Detect fn with a body in an extern block

This commit is contained in:
Esteban Küber 2019-07-13 21:15:21 -07:00
parent 69656fa4cb
commit c8d9cd99fa
5 changed files with 91 additions and 15 deletions

View file

@ -0,0 +1,11 @@
extern "C" {
fn foo() -> i32 { //~ ERROR incorrect `fn` inside `extern` block
return 0;
}
}
extern "C" fn bar() -> i32 {
return 0;
}
fn main() {}

View file

@ -0,0 +1,18 @@
error: incorrect `fn` inside `extern` block
--> $DIR/extern-ffi-fn-with-body.rs:2:8
|
LL | extern "C" {
| ------ `extern` blocks define existing foreign functions and `fn`s inside of them can't have a body
LL | fn foo() -> i32 {
| ________^^^__________-
| | |
| | can't have a body
LL | | return 0;
LL | | }
| |_____- this body is invalid here
|
= help: you might have meant to write a function accessible through ffi, which can be done by writing `extern fn` outside of the `extern` block
= note: for more information, visit https://doc.rust-lang.org/std/keyword.extern.html
error: aborting due to previous error