]> git.proxmox.com Git - rustc.git/blame - src/test/ui/nll/closure-captures.rs
New upstream version 1.67.1+dfsg1
[rustc.git] / src / test / ui / nll / closure-captures.rs
CommitLineData
8faf50e0
XL
1// Some cases with closures that might be problems
2
b7449926 3// Should have one error per assignment
8faf50e0
XL
4
5fn one_closure(x: i32) {
6 ||
7 x = 1; //~ ERROR
8 move ||
9 x = 1; //~ ERROR
10}
11
12fn two_closures(x: i32) {
13 || {
14 ||
15 x = 1; //~ ERROR
16 };
17 move || {
18 ||
19 x = 1; //~ ERROR
20 };
21}
22
23fn fn_ref<F: Fn()>(f: F) -> F { f }
24
25fn two_closures_ref_mut(mut x: i32) {
26 fn_ref(|| {
27 || //~ ERROR
28 x = 1;}
29 );
30 fn_ref(move || {
31 || //~ ERROR
32 x = 1;});
33}
34
35// This still gives two messages, but it requires two things to be fixed.
36fn two_closures_ref(x: i32) {
37 fn_ref(|| {
38 || //~ ERROR
39 x = 1;} //~ ERROR
40 );
41 fn_ref(move || {
42 || //~ ERROR
43 x = 1;}); //~ ERROR
44}
45
46fn two_closures_two_refs(x: &mut i32) {
47 fn_ref(|| {
48 || //~ ERROR
49 *x = 1;});
50 fn_ref(move || {
51 || //~ ERROR
52 *x = 1;});
53}
54
55fn main() {}