]> git.lizzy.rs Git - rust.git/commitdiff
Add test
authorEsteban Küber <esteban@kuber.com.ar>
Sun, 8 Jan 2023 01:53:08 +0000 (01:53 +0000)
committerEsteban Küber <esteban@kuber.com.ar>
Sun, 8 Jan 2023 01:53:08 +0000 (01:53 +0000)
src/test/ui/type/closure-with-wrong-borrows.rs [new file with mode: 0644]
src/test/ui/type/closure-with-wrong-borrows.stderr [new file with mode: 0644]

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 (file)
index 0000000..5f6a783
--- /dev/null
@@ -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 (file)
index 0000000..e13db6c
--- /dev/null
@@ -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`.