]> git.lizzy.rs Git - rust.git/blob - src/test/ui/mismatched_types/closure-arg-count.rs
Rollup merge of #56242 - GuillaumeGomez:iterator-missing-link, r=Centril
[rust.git] / src / test / ui / mismatched_types / closure-arg-count.rs
1 // Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 #![feature(unboxed_closures)]
12
13 fn f<F: Fn<usize>>(_: F) {}
14 fn main() {
15     [1, 2, 3].sort_by(|| panic!());
16     //~^ ERROR closure is expected to take
17     [1, 2, 3].sort_by(|tuple| panic!());
18     //~^ ERROR closure is expected to take
19     [1, 2, 3].sort_by(|(tuple, tuple2)| panic!());
20     //~^ ERROR closure is expected to take
21     [1, 2, 3].sort_by(|(tuple, tuple2): (usize, _)| panic!());
22     //~^ ERROR closure is expected to take
23     f(|| panic!());
24     //~^ ERROR closure is expected to take
25     f(  move    || panic!());
26     //~^ ERROR closure is expected to take
27
28     let _it = vec![1, 2, 3].into_iter().enumerate().map(|i, x| i);
29     //~^ ERROR closure is expected to take
30     let _it = vec![1, 2, 3].into_iter().enumerate().map(|i: usize, x| i);
31     //~^ ERROR closure is expected to take
32     let _it = vec![1, 2, 3].into_iter().enumerate().map(|i, x, y| i);
33     //~^ ERROR closure is expected to take
34     let _it = vec![1, 2, 3].into_iter().enumerate().map(foo);
35     //~^ ERROR function is expected to take
36     let bar = |i, x, y| i;
37     let _it = vec![1, 2, 3].into_iter().enumerate().map(bar);
38     //~^ ERROR closure is expected to take
39     let _it = vec![1, 2, 3].into_iter().enumerate().map(qux);
40     //~^ ERROR function is expected to take
41
42     let _it = vec![1, 2, 3].into_iter().map(usize::checked_add);
43     //~^ ERROR function is expected to take
44
45     call(Foo);
46     //~^ ERROR function is expected to take
47 }
48
49 fn foo() {}
50 fn qux(x: usize, y: usize) {}
51
52 fn call<F, R>(_: F) where F: FnOnce() -> R {}
53 struct Foo(u8);