about summary refs log tree commit diff
diff options
context:
space:
mode:
authorinquisitivecrystal <22333129+inquisitivecrystal@users.noreply.github.com>2022-01-02 22:23:31 -0800
committerinquisitivecrystal <22333129+inquisitivecrystal@users.noreply.github.com>2022-01-05 15:22:22 -0800
commit42de973099a14c0efa9059b1bf820d8a9c61f326 (patch)
tree21dacd533df2c7496e9f85a9c1fc02829f7ec2b1
parent486585242e57ba184f26547c52c428dbf135e762 (diff)
downloadrust-42de973099a14c0efa9059b1bf820d8a9c61f326.tar.gz
rust-42de973099a14c0efa9059b1bf820d8a9c61f326.zip
Add regression test
-rw-r--r--src/test/ui/foreign/issue-91370-foreign-fn-block-impl.rs12
-rw-r--r--src/test/ui/foreign/issue-91370-foreign-fn-block-impl.stderr21
2 files changed, 33 insertions, 0 deletions
diff --git a/src/test/ui/foreign/issue-91370-foreign-fn-block-impl.rs b/src/test/ui/foreign/issue-91370-foreign-fn-block-impl.rs
new file mode 100644
index 00000000000..2ac3ca29355
--- /dev/null
+++ b/src/test/ui/foreign/issue-91370-foreign-fn-block-impl.rs
@@ -0,0 +1,12 @@
+// Regression test for issue #91370.
+
+extern {
+    //~^ `extern` blocks define existing foreign functions
+    fn f() {
+        //~^ incorrect function inside `extern` block
+        //~| cannot have a body
+        impl Copy for u8 {}
+    }
+}
+
+fn main() {}
diff --git a/src/test/ui/foreign/issue-91370-foreign-fn-block-impl.stderr b/src/test/ui/foreign/issue-91370-foreign-fn-block-impl.stderr
new file mode 100644
index 00000000000..4fb2f8c659c
--- /dev/null
+++ b/src/test/ui/foreign/issue-91370-foreign-fn-block-impl.stderr
@@ -0,0 +1,21 @@
+error: incorrect function inside `extern` block
+  --> $DIR/issue-91370-foreign-fn-block-impl.rs:5:8
+   |
+LL |   extern {
+   |   ------ `extern` blocks define existing foreign functions and functions inside of them cannot have a body
+LL |
+LL |       fn f() {
+   |  ________^___-
+   | |        |
+   | |        cannot have a body
+LL | |
+LL | |
+LL | |         impl Copy for u8 {}
+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: aborting due to previous error
+