From 218caa410aa38c29984be31a5229b9fa717560ee Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:19:13 +0200 Subject: Merging upstream version 1.68.2+dfsg1. Signed-off-by: Daniel Baumann --- tests/ui/borrowck/borrowck-lend-flow.rs | 39 +++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 tests/ui/borrowck/borrowck-lend-flow.rs (limited to 'tests/ui/borrowck/borrowck-lend-flow.rs') diff --git a/tests/ui/borrowck/borrowck-lend-flow.rs b/tests/ui/borrowck/borrowck-lend-flow.rs new file mode 100644 index 000000000..564c57044 --- /dev/null +++ b/tests/ui/borrowck/borrowck-lend-flow.rs @@ -0,0 +1,39 @@ +// Note: the borrowck analysis is currently flow-insensitive. +// Therefore, some of these errors are marked as spurious and could be +// corrected by a simple change to the analysis. The others are +// either genuine or would require more advanced changes. The latter +// cases are noted. + + + +fn borrow(_v: &isize) {} +fn borrow_mut(_v: &mut isize) {} +fn cond() -> bool { panic!() } +fn for_func(_f: F) where F: FnOnce() -> bool { panic!() } +fn produce() -> T { panic!(); } + +fn inc(v: &mut Box) { + *v = Box::new(**v + 1); +} + +fn pre_freeze() { + // In this instance, the freeze starts before the mut borrow. + + let mut v: Box<_> = Box::new(3); + let _w = &v; + borrow_mut(&mut *v); //~ ERROR cannot borrow + _w.use_ref(); +} + +fn post_freeze() { + // In this instance, the const alias starts after the borrow. + + let mut v: Box<_> = Box::new(3); + borrow_mut(&mut *v); + let _w = &v; +} + +fn main() {} + +trait Fake { fn use_mut(&mut self) { } fn use_ref(&self) { } } +impl Fake for T { } -- cgit v1.2.3