about summary refs log tree commit diff
path: root/tests/ui/parser
diff options
context:
space:
mode:
authoryukang <moorekang@gmail.com>2023-07-05 16:25:46 +0800
committeryukang <moorekang@gmail.com>2023-07-05 16:25:46 +0800
commitf25463e8483d8dcfb64cda4e96d5b4fbd11a19c8 (patch)
tree85c89a023ace276cea7b768c742c87d353572c9d /tests/ui/parser
parentb7bc6f88ac771e1197ac9e06bf20586eeb5d0bdf (diff)
downloadrust-f25463e8483d8dcfb64cda4e96d5b4fbd11a19c8.tar.gz
rust-f25463e8483d8dcfb64cda4e96d5b4fbd11a19c8.zip
Fix the issue of wrong diagnosis for extern pub fn
Diffstat (limited to 'tests/ui/parser')
-rw-r--r--tests/ui/parser/issue-113342.rs9
-rw-r--r--tests/ui/parser/issue-113342.stderr11
2 files changed, 20 insertions, 0 deletions
diff --git a/tests/ui/parser/issue-113342.rs b/tests/ui/parser/issue-113342.rs
new file mode 100644
index 00000000000..18b502736f7
--- /dev/null
+++ b/tests/ui/parser/issue-113342.rs
@@ -0,0 +1,9 @@
+#[link(name = "my_c_library")]
+extern "C" {
+    fn my_c_function(x: i32) -> bool;
+}
+
+#[no_mangle]
+extern "C" pub fn id(x: i32) -> i32 { x } //~ ERROR expected `fn`, found keyword `pub`
+
+fn main() {}
diff --git a/tests/ui/parser/issue-113342.stderr b/tests/ui/parser/issue-113342.stderr
new file mode 100644
index 00000000000..a0c5e665ff8
--- /dev/null
+++ b/tests/ui/parser/issue-113342.stderr
@@ -0,0 +1,11 @@
+error: expected `fn`, found keyword `pub`
+  --> $DIR/issue-113342.rs:7:12
+   |
+LL | extern "C" pub fn id(x: i32) -> i32 { x }
+   | -----------^^^
+   | |          |
+   | |          expected `fn`
+   | help: visibility `pub` must come before `extern "C"`: `pub extern "C"`
+
+error: aborting due to previous error
+