| //@ run-pass |
| #![allow(dead_code)] |
| |
| // FIXME(static_mut_refs): Do not allow `static_mut_refs` lint |
| #![allow(static_mut_refs)] |
| |
| // Checks that mutable static items can have mutable slices and other references |
| |
| |
| static mut TEST: &'static mut [isize] = &mut [1]; |
| static mut EMPTY: &'static mut [isize] = &mut []; |
| static mut INT: &'static mut isize = &mut 1; |
| |
| // And the same for raw pointers. |
| |
| static mut TEST_RAW: *mut [isize] = &mut [1isize] as *mut _; |
| static mut EMPTY_RAW: *mut [isize] = &mut [] as *mut _; |
| static mut INT_RAW: *mut isize = &mut 1isize as *mut _; |
| |
| pub fn main() { |
| unsafe { |
| TEST[0] += 1; |
| assert_eq!(TEST[0], 2); |
| *INT_RAW += 1; |
| assert_eq!(*INT_RAW, 2); |
| } |
| } |