about summary refs log tree commit diff
path: root/src/tools/miri/tests/pass/without-validation.rs
blob: 934c44a7deb4dccc1a12c624d7c4292382f6f50f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// When we notice something breaks only without validation, we add a test here.
//@compile-flags: -Zmiri-disable-validation
use std::cell::*;

fn refcell_unsize() {
    let cell: RefCell<[i32; 3]> = RefCell::new([1, 2, 3]);
    {
        let mut cellref: RefMut<'_, [i32; 3]> = cell.borrow_mut();
        cellref[0] = 4;
        let mut coerced: RefMut<'_, [i32]> = cellref;
        coerced[2] = 5;
    }
    {
        let comp: &mut [i32] = &mut [4, 2, 5];
        let cellref: Ref<'_, [i32; 3]> = cell.borrow();
        assert_eq!(&*cellref, comp);
        let coerced: Ref<'_, [i32]> = cellref;
        assert_eq!(&*coerced, comp);
    }
}

fn main() {
    refcell_unsize();
}