about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorSparrowLii <liyuan179@huawei.com>2022-05-30 15:56:43 +0800
committerSparrowLii <liyuan179@huawei.com>2022-05-30 15:56:43 +0800
commit0be2ca96fa7d723db870fb2f96df0f07d32c0774 (patch)
treee995647be68341b153dfc991310763f893ede7fc /src
parent56d540e0571ac1b0633ce10644224c495aaf42a0 (diff)
downloadrust-0be2ca96fa7d723db870fb2f96df0f07d32c0774.tar.gz
rust-0be2ca96fa7d723db870fb2f96df0f07d32c0774.zip
Optimize the diagnostic generation for `extern unsafe`
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/parser/issues/issue-19398.stderr7
-rw-r--r--src/test/ui/parser/unsafe-foreign-mod-2.rs8
-rw-r--r--src/test/ui/parser/unsafe-foreign-mod-2.stderr28
3 files changed, 37 insertions, 6 deletions
diff --git a/src/test/ui/parser/issues/issue-19398.stderr b/src/test/ui/parser/issues/issue-19398.stderr
index bbd85374b4b..1da00960adf 100644
--- a/src/test/ui/parser/issues/issue-19398.stderr
+++ b/src/test/ui/parser/issues/issue-19398.stderr
@@ -4,15 +4,10 @@ error: expected `{`, found keyword `unsafe`
 LL | trait T {
    |         - while parsing this item list starting here
 LL |     extern "Rust" unsafe fn foo();
-   |     --------------^^^^^^
-   |     |             |
-   |     |             expected `{`
-   |     help: `unsafe` must come before `extern "Rust"`: `unsafe extern "Rust"`
+   |                   ^^^^^^ expected `{`
 LL |
 LL | }
    | - the item list ends here
-   |
-   = note: keyword order for functions declaration is `pub`, `default`, `const`, `async`, `unsafe`, `extern`
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/parser/unsafe-foreign-mod-2.rs b/src/test/ui/parser/unsafe-foreign-mod-2.rs
new file mode 100644
index 00000000000..77856fb6734
--- /dev/null
+++ b/src/test/ui/parser/unsafe-foreign-mod-2.rs
@@ -0,0 +1,8 @@
+extern "C" unsafe {
+               //~^ ERROR expected `{`, found keyword `unsafe`
+               //~| ERROR extern block cannot be declared unsafe
+    unsafe fn foo();
+        //~^ ERROR functions in `extern` blocks cannot have qualifiers
+}
+
+fn main() {}
diff --git a/src/test/ui/parser/unsafe-foreign-mod-2.stderr b/src/test/ui/parser/unsafe-foreign-mod-2.stderr
new file mode 100644
index 00000000000..7cc2de141ae
--- /dev/null
+++ b/src/test/ui/parser/unsafe-foreign-mod-2.stderr
@@ -0,0 +1,28 @@
+error: expected `{`, found keyword `unsafe`
+  --> $DIR/unsafe-foreign-mod-2.rs:1:12
+   |
+LL | extern "C" unsafe {
+   |            ^^^^^^ expected `{`
+
+error: extern block cannot be declared unsafe
+  --> $DIR/unsafe-foreign-mod-2.rs:1:12
+   |
+LL | extern "C" unsafe {
+   |            ^^^^^^
+
+error: functions in `extern` blocks cannot have qualifiers
+  --> $DIR/unsafe-foreign-mod-2.rs:4:15
+   |
+LL | extern "C" unsafe {
+   | ----------------- in this `extern` block
+...
+LL |     unsafe fn foo();
+   |               ^^^
+   |
+help: remove the qualifiers
+   |
+LL |     fn foo();
+   |     ~~
+
+error: aborting due to 3 previous errors
+