about summary refs log tree commit diff
path: root/tests/ui/precondition-checks/slice-from-raw-parts-mut.rs
blob: b6397ab2a12bc11f71b9f74cb818e75c6903ec08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//@ run-crash
//@ compile-flags: -Copt-level=3 -Cdebug-assertions=no -Zub-checks=yes
//@ error-pattern: unsafe precondition(s) violated: slice::from_raw_parts_mut requires
//@ revisions: null misaligned toolarge

#![allow(invalid_null_arguments)]

fn main() {
    unsafe {
        #[cfg(null)]
        let _s: &mut [u8] = std::slice::from_raw_parts_mut(std::ptr::null_mut(), 0);
        #[cfg(misaligned)]
        let _s: &mut [u16] = std::slice::from_raw_parts_mut(1usize as *mut u16, 0);
        #[cfg(toolarge)]
        let _s: &mut [u16] =
            std::slice::from_raw_parts_mut(2usize as *mut u16, isize::MAX as usize);
    }
}