about summary refs log tree commit diff
diff options
context:
space:
mode:
authorYuki Okushi <jtitor@2k36.org>2022-07-17 08:50:41 +0900
committerYuki Okushi <jtitor@2k36.org>2022-07-17 08:50:41 +0900
commita94e6c78a2f2ceefbfc8781d885eb74a69a5d542 (patch)
tree4163d4910e7346e0f6408ee9410deccede893d4b
parentd5e7f4782e4b699728d0a08200ecd1a54d56a85d (diff)
downloadrust-a94e6c78a2f2ceefbfc8781d885eb74a69a5d542.tar.gz
rust-a94e6c78a2f2ceefbfc8781d885eb74a69a5d542.zip
Add regression test for #95829
Signed-off-by: Yuki Okushi <jtitor@2k36.org>
-rw-r--r--src/test/ui/extern/issue-95829.rs10
-rw-r--r--src/test/ui/extern/issue-95829.stderr32
2 files changed, 42 insertions, 0 deletions
diff --git a/src/test/ui/extern/issue-95829.rs b/src/test/ui/extern/issue-95829.rs
new file mode 100644
index 00000000000..3379148ae7b
--- /dev/null
+++ b/src/test/ui/extern/issue-95829.rs
@@ -0,0 +1,10 @@
+// edition:2018
+
+extern {
+    async fn L() { //~ ERROR: incorrect function inside `extern` block
+        //~^ ERROR: functions in `extern` blocks cannot have qualifiers
+        async fn M() {}
+    }
+}
+
+fn main() {}
diff --git a/src/test/ui/extern/issue-95829.stderr b/src/test/ui/extern/issue-95829.stderr
new file mode 100644
index 00000000000..b902f0ef8f5
--- /dev/null
+++ b/src/test/ui/extern/issue-95829.stderr
@@ -0,0 +1,32 @@
+error: incorrect function inside `extern` block
+  --> $DIR/issue-95829.rs:4:14
+   |
+LL |   extern {
+   |   ------ `extern` blocks define existing foreign functions and functions inside of them cannot have a body
+LL |       async fn L() {
+   |  ______________^___-
+   | |              |
+   | |              cannot have a body
+LL | |
+LL | |         async fn M() {}
+LL | |     }
+   | |_____- help: remove the invalid body: `;`
+   |
+   = 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: functions in `extern` blocks cannot have qualifiers
+  --> $DIR/issue-95829.rs:4:14
+   |
+LL | extern {
+   | ------ in this `extern` block
+LL |     async fn L() {
+   |              ^
+   |
+help: remove the qualifiers
+   |
+LL |     fn L() {
+   |     ~~
+
+error: aborting due to 2 previous errors
+