about summary refs log tree commit diff
diff options
context:
space:
mode:
authorYuki Okushi <jtitor@2k36.org>2022-07-17 13:08:53 +0900
committerGitHub <noreply@github.com>2022-07-17 13:08:53 +0900
commit1d193236b0ec55a557f003af9a74a1ead51ef81a (patch)
tree6795ec9f984031ea2d9f5903cdfdcde35a44b9b0
parent50527690e212a3c029f5dcdee627710208571713 (diff)
parenta94e6c78a2f2ceefbfc8781d885eb74a69a5d542 (diff)
downloadrust-1d193236b0ec55a557f003af9a74a1ead51ef81a.tar.gz
rust-1d193236b0ec55a557f003af9a74a1ead51ef81a.zip
Rollup merge of #99354 - JohnTitor:issue-95829, r=compiler-errors
Add regression test for #95829

Closes #95829
r? `@compiler-errors`

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
+