summaryrefslogtreecommitdiffstats
path: root/src/test/ui/mismatched_types/closure-arg-count.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/mismatched_types/closure-arg-count.rs')
-rw-r--r--src/test/ui/mismatched_types/closure-arg-count.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/test/ui/mismatched_types/closure-arg-count.rs b/src/test/ui/mismatched_types/closure-arg-count.rs
new file mode 100644
index 000000000..e817631ad
--- /dev/null
+++ b/src/test/ui/mismatched_types/closure-arg-count.rs
@@ -0,0 +1,43 @@
+#![feature(unboxed_closures)]
+
+fn f<F: Fn<usize>>(_: F) {}
+fn main() {
+ [1, 2, 3].sort_by(|| panic!());
+ //~^ ERROR closure is expected to take
+ [1, 2, 3].sort_by(|tuple| panic!());
+ //~^ ERROR closure is expected to take
+ [1, 2, 3].sort_by(|(tuple, tuple2)| panic!());
+ //~^ ERROR closure is expected to take
+ [1, 2, 3].sort_by(|(tuple, tuple2): (usize, _)| panic!());
+ //~^ ERROR closure is expected to take
+ f(|| panic!());
+ //~^ ERROR closure is expected to take
+ f( move || panic!());
+ //~^ ERROR closure is expected to take
+
+ let _it = vec![1, 2, 3].into_iter().enumerate().map(|i, x| i);
+ //~^ ERROR closure is expected to take
+ let _it = vec![1, 2, 3].into_iter().enumerate().map(|i: usize, x| i);
+ //~^ ERROR closure is expected to take
+ let _it = vec![1, 2, 3].into_iter().enumerate().map(|i, x, y| i);
+ //~^ ERROR closure is expected to take
+ let _it = vec![1, 2, 3].into_iter().enumerate().map(foo);
+ //~^ ERROR function is expected to take
+ let bar = |i, x, y| i;
+ let _it = vec![1, 2, 3].into_iter().enumerate().map(bar);
+ //~^ ERROR closure is expected to take
+ let _it = vec![1, 2, 3].into_iter().enumerate().map(qux);
+ //~^ ERROR function is expected to take
+
+ let _it = vec![1, 2, 3].into_iter().map(usize::checked_add);
+ //~^ ERROR function is expected to take
+
+ call(Foo);
+ //~^ ERROR function is expected to take
+}
+
+fn foo() {}
+fn qux(x: usize, y: usize) {}
+
+fn call<F, R>(_: F) where F: FnOnce() -> R {}
+struct Foo(u8);