diff options
Diffstat (limited to 'tests/ui/regions/regions-reborrow-from-shorter-mut-ref.rs')
-rw-r--r-- | tests/ui/regions/regions-reborrow-from-shorter-mut-ref.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/tests/ui/regions/regions-reborrow-from-shorter-mut-ref.rs b/tests/ui/regions/regions-reborrow-from-shorter-mut-ref.rs new file mode 100644 index 000000000..88cc54650 --- /dev/null +++ b/tests/ui/regions/regions-reborrow-from-shorter-mut-ref.rs @@ -0,0 +1,16 @@ +// Issue #8624. Tests that reborrowing the contents of an `&'b mut` +// pointer which is backed by another `&'a mut` can only be done +// for `'a` (which must be a sublifetime of `'b`). + +fn copy_borrowed_ptr<'a, 'b>(p: &'a mut &'b mut isize) -> &'b mut isize { + &mut **p + //~^ ERROR lifetime may not live long enough +} + +fn main() { + let mut x = 1; + let mut y = &mut x; + let z = copy_borrowed_ptr(&mut y); + *y += 1; + *z += 1; +} |