| // edition:2021 |
| |
| // Test that we point to the correct location that results a union being captured. |
| // Union is special because it can't be disjointly captured. |
| |
| union A { |
| y: u32, |
| x: (), |
| } |
| |
| fn main() { |
| let mut a = A { y: 1 }; |
| let mut c = || { |
| //~^ `a.y` is borrowed here |
| let _ = unsafe { &a.y }; |
| let _ = &mut a; |
| //~^ borrow occurs due to use in closure |
| let _ = unsafe { &mut a.y }; |
| }; |
| a.y = 1; |
| //~^ cannot assign to `a.y` because it is borrowed [E0506] |
| //~| `a.y` is assigned to here |
| c(); |
| //~^ borrow later used here |
| } |