about summary refs log tree commit diff
path: root/tests/ui/function-pointer
diff options
context:
space:
mode:
authorThe Miri Cronjob Bot <miri@cron.bot>2024-12-20 05:02:14 +0000
committerThe Miri Cronjob Bot <miri@cron.bot>2024-12-20 05:02:14 +0000
commit5e2ce7eb7a76908404d9532cae2628d38cc62b4b (patch)
tree72ad079ee9a4274d62260de1889ae8a545ac8a74 /tests/ui/function-pointer
parent09c8eb5d26c41ecac7b55a4c3cef51bd2bdce507 (diff)
parent214587c89d527dd0ccbe1f2150c737d3bdee67b0 (diff)
downloadrust-5e2ce7eb7a76908404d9532cae2628d38cc62b4b.tar.gz
rust-5e2ce7eb7a76908404d9532cae2628d38cc62b4b.zip
Merge from rustc
Diffstat (limited to 'tests/ui/function-pointer')
-rw-r--r--tests/ui/function-pointer/signature-mismatch.rs6
-rw-r--r--tests/ui/function-pointer/signature-mismatch.stderr12
2 files changed, 18 insertions, 0 deletions
diff --git a/tests/ui/function-pointer/signature-mismatch.rs b/tests/ui/function-pointer/signature-mismatch.rs
new file mode 100644
index 00000000000..f269e9bf84b
--- /dev/null
+++ b/tests/ui/function-pointer/signature-mismatch.rs
@@ -0,0 +1,6 @@
+//! This test used to hit an assertion instead of erroring and bailing out.
+
+fn main() {
+    let _ = [std::ops::Add::add, std::ops::Mul::mul, std::ops::Mul::mul as fn(_, &_)];
+    //~^ ERROR: mismatched types
+}
diff --git a/tests/ui/function-pointer/signature-mismatch.stderr b/tests/ui/function-pointer/signature-mismatch.stderr
new file mode 100644
index 00000000000..f02a576e511
--- /dev/null
+++ b/tests/ui/function-pointer/signature-mismatch.stderr
@@ -0,0 +1,12 @@
+error[E0308]: mismatched types
+  --> $DIR/signature-mismatch.rs:4:54
+   |
+LL |     let _ = [std::ops::Add::add, std::ops::Mul::mul, std::ops::Mul::mul as fn(_, &_)];
+   |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ one type is more general than the other
+   |
+   = note: expected fn pointer `fn(_, _) -> _`
+              found fn pointer `for<'a> fn(_, &'a _) -> ()`
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0308`.