diff options
Diffstat (limited to 'tests/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs')
-rw-r--r-- | tests/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs b/tests/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs new file mode 100644 index 000000000..7a88c3df2 --- /dev/null +++ b/tests/ui/borrowck/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs @@ -0,0 +1,24 @@ +// Test that attempt to reborrow an `&mut` pointer in an aliasable +// location yields an error. +// +// Example from compiler/rustc_borrowck/borrowck/README.md + +fn foo(t0: & &mut isize) { + let t1 = t0; + let p: &isize = &**t0; + **t1 = 22; //~ ERROR cannot assign +} + +fn foo3(t0: &mut &mut isize) { + let t1 = &mut *t0; + let p: &isize = &**t0; //~ ERROR cannot borrow + **t1 = 22; +} + +fn foo4(t0: & &mut isize) { + let x: &mut isize = &mut **t0; //~ ERROR cannot borrow + *x += 1; +} + +fn main() { +} |