summaryrefslogtreecommitdiffstats
path: root/src/test/ui/nll/match-guards-always-borrow.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
commit64d98f8ee037282c35007b64c2649055c56af1db (patch)
tree5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /src/test/ui/nll/match-guards-always-borrow.rs
parentAdding debian version 1.67.1+dfsg1-1. (diff)
downloadrustc-64d98f8ee037282c35007b64c2649055c56af1db.tar.xz
rustc-64d98f8ee037282c35007b64c2649055c56af1db.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/nll/match-guards-always-borrow.rs')
-rw-r--r--src/test/ui/nll/match-guards-always-borrow.rs41
1 files changed, 0 insertions, 41 deletions
diff --git a/src/test/ui/nll/match-guards-always-borrow.rs b/src/test/ui/nll/match-guards-always-borrow.rs
deleted file mode 100644
index 87dba187b..000000000
--- a/src/test/ui/nll/match-guards-always-borrow.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-// Here is arielb1's basic example from rust-lang/rust#27282
-// that AST borrowck is flummoxed by:
-
-fn should_reject_destructive_mutate_in_guard() {
- match Some(&4) {
- None => {},
- ref mut foo if {
- (|| { let bar = foo; bar.take() })();
- //~^ ERROR cannot move out of `foo` in pattern guard [E0507]
- false } => { },
- Some(s) => std::process::exit(*s),
- }
-}
-
-// Here below is a case that needs to keep working: we only use the
-// binding via immutable-borrow in the guard, and we mutate in the arm
-// body.
-fn allow_mutate_in_arm_body() {
- match Some(&4) {
- None => {},
- ref mut foo if foo.is_some() && false => { foo.take(); () }
- Some(s) => std::process::exit(*s),
- }
-}
-
-// Here below is a case that needs to keep working: we only use the
-// binding via immutable-borrow in the guard, and we move into the arm
-// body.
-fn allow_move_into_arm_body() {
- match Some(&4) {
- None => {},
- mut foo if foo.is_some() && false => { foo.take(); () }
- Some(s) => std::process::exit(*s),
- }
-}
-
-fn main() {
- should_reject_destructive_mutate_in_guard();
- allow_mutate_in_arm_body();
- allow_move_into_arm_body();
-}