]> git.lizzy.rs Git - rust.git/commitdiff
Add additional match test case
authorRoxane <roxane.fruytier@hotmail.com>
Tue, 24 Aug 2021 02:41:19 +0000 (22:41 -0400)
committerRoxane <roxane.fruytier@hotmail.com>
Sat, 28 Aug 2021 23:29:46 +0000 (19:29 -0400)
src/test/ui/closures/2229_closure_analysis/match-edge-cases.rs
src/test/ui/closures/2229_closure_analysis/match-edge-cases.stderr [new file with mode: 0644]

index 914ebbe26a57d0b817ac99b8a36cd9ad8c92ac62..f5330b07445a2d4b24c30325604e7dcad24aa257 100644 (file)
@@ -41,4 +41,38 @@ pub fn edge_case_char(event: char) {
     };
 }
 
+enum SingleVariant {
+    A
+}
+
+struct TestStruct {
+    x: i32,
+    y: i32,
+    z: i32,
+}
+
+fn edge_case_if() {
+    let sv = SingleVariant::A;
+    let condition = true;
+    // sv should not be captured as it is a SingleVariant
+    let _a = || {
+        match sv {
+            SingleVariant::A if condition => (),
+            _ => ()
+        }
+    };
+    let mut mut_sv = sv;
+    _a();
+
+    // ts should be captured
+    let ts = TestStruct { x: 1, y: 1, z: 1 };
+    let _b = || { match ts {
+        TestStruct{ x: 1, .. } => (),
+        _ => ()
+    }};
+    let mut mut_ts = ts;
+    //~^ ERROR: cannot move out of `ts` because it is borrowed
+    _b();
+}
+
 fn main() {}
diff --git a/src/test/ui/closures/2229_closure_analysis/match-edge-cases.stderr b/src/test/ui/closures/2229_closure_analysis/match-edge-cases.stderr
new file mode 100644 (file)
index 0000000..b9d2316
--- /dev/null
@@ -0,0 +1,17 @@
+error[E0505]: cannot move out of `ts` because it is borrowed
+  --> $DIR/match-edge-cases.rs:32:22
+   |
+LL |     let _b = || { match ts {
+   |              --         -- borrow occurs due to use in closure
+   |              |
+   |              borrow of `ts` occurs here
+...
+LL |     let mut mut_ts = ts;
+   |                      ^^ move out of `ts` occurs here
+LL |
+LL |     _b();
+   |     -- borrow later used here
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0505`.