|  | //@ 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); | 
|  | } | 
|  | } |