From 698f8c2f01ea549d77d7dc3338a12e04c11057b9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:02:58 +0200 Subject: Adding upstream version 1.64.0+dfsg1. Signed-off-by: Daniel Baumann --- src/test/ui/borrowck/issue-17263.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/test/ui/borrowck/issue-17263.rs (limited to 'src/test/ui/borrowck/issue-17263.rs') diff --git a/src/test/ui/borrowck/issue-17263.rs b/src/test/ui/borrowck/issue-17263.rs new file mode 100644 index 000000000..4f560b065 --- /dev/null +++ b/src/test/ui/borrowck/issue-17263.rs @@ -0,0 +1,23 @@ +// check-pass + +struct Foo { a: isize, b: isize } + +fn main() { + let mut x: Box<_> = Box::new(Foo { a: 1, b: 2 }); + let (a, b) = (&mut x.a, &mut x.b); + + let mut foo: Box<_> = Box::new(Foo { a: 1, b: 2 }); + let (c, d) = (&mut foo.a, &foo.b); + + // We explicitly use the references created above to illustrate that the + // borrow checker is accepting this code *not* because of artificially + // short lifetimes, but rather because it understands that all the + // references are of disjoint parts of memory. + use_imm(d); + use_mut(c); + use_mut(b); + use_mut(a); +} + +fn use_mut(_: &mut T) { } +fn use_imm(_: &T) { } -- cgit v1.2.3