summary refs log tree commit diff
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2023-01-08 01:53:08 +0000
committerEsteban Küber <esteban@kuber.com.ar>2023-01-08 01:53:08 +0000
commitd85d38b7b8ad9faa12231bbcc9a0214410c0719c (patch)
treead2661dbb9326b56f373d07ac481c2faa5108400
parentb1691f6413a4afd7529ab309965123cc63e82021 (diff)
downloadrust-d85d38b7b8ad9faa12231bbcc9a0214410c0719c.tar.gz
rust-d85d38b7b8ad9faa12231bbcc9a0214410c0719c.zip
Add test
-rw-r--r--src/test/ui/type/closure-with-wrong-borrows.rs10
-rw-r--r--src/test/ui/type/closure-with-wrong-borrows.stderr23
2 files changed, 33 insertions, 0 deletions
diff --git a/src/test/ui/type/closure-with-wrong-borrows.rs b/src/test/ui/type/closure-with-wrong-borrows.rs
new file mode 100644
index 00000000000..5f6a78351a2
--- /dev/null
+++ b/src/test/ui/type/closure-with-wrong-borrows.rs
@@ -0,0 +1,10 @@
+struct S<'a>(&'a str);
+
+fn f(inner: fn(&str, &S)) {
+}
+
+#[allow(unreachable_code)]
+fn main() {
+    let inner: fn(_, _) = unimplemented!();
+    f(inner); //~ ERROR mismatched types
+}
diff --git a/src/test/ui/type/closure-with-wrong-borrows.stderr b/src/test/ui/type/closure-with-wrong-borrows.stderr
new file mode 100644
index 00000000000..e13db6c325a
--- /dev/null
+++ b/src/test/ui/type/closure-with-wrong-borrows.stderr
@@ -0,0 +1,23 @@
+error[E0308]: mismatched types
+  --> $DIR/closure-with-wrong-borrows.rs:9:7
+   |
+LL |     f(inner);
+   |     - ^^^^^ one type is more general than the other
+   |     |
+   |     arguments to this function are incorrect
+   |
+   = note: expected fn pointer `for<'a, 'b, 'c> fn(&'a str, &'b S<'c>)`
+              found fn pointer `fn(_, _)`
+note: function defined here
+  --> $DIR/closure-with-wrong-borrows.rs:3:4
+   |
+LL | fn f(inner: fn(&str, &S)) {
+   |    ^ -------------------
+help: consider removing the ``
+   |
+LL |     f(inner);
+   |
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0308`.