]> git.lizzy.rs Git - rust.git/blob - tests/ui/borrowck/borrowck-use-mut-borrow-rpass.rs
Rollup merge of #106726 - cmorin6:fix-comment-typos, r=Nilstrieb
[rust.git] / tests / ui / borrowck / borrowck-use-mut-borrow-rpass.rs
1 // run-pass
2 // pretty-expanded FIXME #23616
3
4 struct A { a: isize, b: Box<isize> }
5
6 fn field_copy_after_field_borrow() {
7     let mut x = A { a: 1, b: Box::new(2) };
8     let p = &mut x.b;
9     drop(x.a);
10     **p = 3;
11 }
12
13 fn fu_field_copy_after_field_borrow() {
14     let mut x = A { a: 1, b: Box::new(2) };
15     let p = &mut x.b;
16     let y = A { b: Box::new(3), .. x };
17     drop(y);
18     **p = 4;
19 }
20
21 fn field_deref_after_field_borrow() {
22     let mut x = A { a: 1, b: Box::new(2) };
23     let p = &mut x.a;
24     drop(*x.b);
25     *p = 3;
26 }
27
28 fn field_move_after_field_borrow() {
29     let mut x = A { a: 1, b: Box::new(2) };
30     let p = &mut x.a;
31     drop(x.b);
32     *p = 3;
33 }
34
35 fn fu_field_move_after_field_borrow() {
36     let mut x = A { a: 1, b: Box::new(2) };
37     let p = &mut x.a;
38     let y = A { a: 3, .. x };
39     drop(y);
40     *p = 4;
41 }
42
43 fn main() {
44     field_copy_after_field_borrow();
45     fu_field_copy_after_field_borrow();
46     field_deref_after_field_borrow();
47     field_move_after_field_borrow();
48     fu_field_move_after_field_borrow();
49 }