diff options
Diffstat (limited to 'src/test/ui/mismatched_types/closure-arg-count.rs')
-rw-r--r-- | src/test/ui/mismatched_types/closure-arg-count.rs | 43 |
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); |