]> git.lizzy.rs Git - rust.git/blob - src/tools/miri/tests/fail/stacked_borrows/return_invalid_shr_option.rs
Reintroduce the span printing in miri (plus point to spans where possible)
[rust.git] / src / tools / miri / tests / fail / stacked_borrows / return_invalid_shr_option.rs
1 // Make sure that we cannot return a `&` that got already invalidated, not even in an `Option`.
2 fn foo(x: &mut (i32, i32)) -> Option<&i32> {
3     let xraw = x as *mut (i32, i32);
4     let ret = Some(unsafe { &(*xraw).1 });
5     unsafe { *xraw = (42, 23) }; // unfreeze
6     ret //~ ERROR: /retag .* tag does not exist in the borrow stack/
7 }
8
9 fn main() {
10     match foo(&mut (1, 2)) {
11         Some(_x) => {}
12         None => {}
13     }
14 }