21 lines
578 B
Rust
21 lines
578 B
Rust
|
// Test that spans displayed in diagnostics identify the function call, not the function
|
||
|
// definition, as the location of invalidation due to FnEntry retag. Technically the FnEntry retag
|
||
|
// occurs inside the function, but what the user wants to know is which call produced the
|
||
|
// invalidation.
|
||
|
fn main() {
|
||
|
let mut x = 0i32;
|
||
|
let z = &mut x as *mut i32;
|
||
|
x.do_bad();
|
||
|
unsafe {
|
||
|
let _oof = *z; //~ ERROR: /read access .* tag does not exist in the borrow stack/
|
||
|
}
|
||
|
}
|
||
|
|
||
|
trait Bad {
|
||
|
fn do_bad(&mut self) {
|
||
|
// who knows
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl Bad for i32 {}
|