14e72e7ffa
Previous Stacked Borrows diagnostics were missing a lot of information about the state of the interpreter, and it was difficult to add additional state because it was threaded through all the intervening function signatures. This change factors a lot of the arguments which used to be passed individually to many stacked borrows functions into a single `DiagnosticCx`, which is built in `Stacks::for_each`, and since it wraps a handle to `AllocHistory`, we can now handle more nuanced things like heterogeneous borrow of `!Freeze` types.
12 lines
274 B
Rust
12 lines
274 B
Rust
//@compile-flags: -Zmiri-strict-provenance
|
|
//@error-pattern: /retag .* tag does not exist in the borrow stack/
|
|
|
|
fn main() {
|
|
unsafe {
|
|
let a = [1, 2, 3];
|
|
let s = &a[0..0];
|
|
assert_eq!(s.len(), 0);
|
|
assert_eq!(*s.get_unchecked(1), 2);
|
|
}
|
|
}
|