]> git.lizzy.rs Git - rust.git/blob - src/test/ui/nll/closure-borrow-spans.rs
Auto merge of #103600 - compiler-errors:early-binder-nits, r=spastorino
[rust.git] / src / test / ui / nll / closure-borrow-spans.rs
1 // check that existing borrows due to a closure capture give a special note
2
3 fn move_while_borrowed(x: String) {
4     let f = || x.len();
5     let y = x; //~ ERROR
6     f.use_ref();
7 }
8
9 fn borrow_mut_while_borrowed(mut x: i32) {
10     let f = || x;
11     let y = &mut x; //~ ERROR
12     f.use_ref();
13 }
14
15 fn drop_while_borrowed() {
16     let f;
17     {
18         let x = 1;
19         f = || x; //~ ERROR
20     }
21     f.use_ref();
22 }
23
24 fn assign_while_borrowed(mut x: i32) {
25     let f = || x;
26     x = 1; //~ ERROR
27     f.use_ref();
28 }
29
30 fn copy_while_borrowed_mut(mut x: i32) {
31     let f = || x = 0;
32     let y = x; //~ ERROR
33     f.use_ref();
34 }
35
36 fn borrow_while_borrowed_mut(mut x: i32) {
37     let f = || x = 0;
38     let y = &x; //~ ERROR
39     f.use_ref();
40 }
41
42 fn borrow_mut_while_borrowed_mut(mut x: i32) {
43     let f = || x = 0;
44     let y = &mut x; //~ ERROR
45     f.use_ref();
46 }
47
48 fn drop_while_borrowed_mut() {
49     let f;
50     {
51         let mut x = 1;
52         f = || x = 0; //~ ERROR
53     }
54     f.use_ref();
55 }
56
57 fn assign_while_borrowed_mut(mut x: i32) {
58     let f = || x = 0;
59     x = 1; //~ ERROR
60     f.use_ref();
61 }
62
63 fn copy_while_borrowed_unique(x: &mut i32) {
64     let f = || *x = 0;
65     let y = x; //~ ERROR
66     f.use_ref();
67 }
68
69 fn borrow_while_borrowed_unique(x: &mut i32) {
70     let f = || *x = 0;
71     let y = &x; //~ ERROR
72     f.use_ref();
73 }
74
75 fn borrow_mut_while_borrowed_unique(mut x: &mut i32) {
76     let f = || *x = 0;
77     let y = &mut x; //~ ERROR
78     f.use_ref();
79 }
80
81 fn drop_while_borrowed_unique() {
82     let mut z = 1;
83     let f;
84     {
85         let x = &mut z;
86         f = || *x = 0; //~ ERROR
87     }
88     f.use_ref();
89 }
90
91 fn assign_while_borrowed_unique(x: &mut i32) {
92     let f = || *x = 0;
93     *x = 1; //~ ERROR
94     f.use_ref();
95 }
96
97 fn main() {}
98
99 trait Fake { fn use_mut(&mut self) { } fn use_ref(&self) { }  }
100 impl<T> Fake for T { }