summaryrefslogtreecommitdiffstats
path: root/src/test/ui/binding/match-reassign.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/binding/match-reassign.rs')
-rw-r--r--src/test/ui/binding/match-reassign.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/test/ui/binding/match-reassign.rs b/src/test/ui/binding/match-reassign.rs
new file mode 100644
index 000000000..19b48579c
--- /dev/null
+++ b/src/test/ui/binding/match-reassign.rs
@@ -0,0 +1,21 @@
+// run-pass
+// Regression test for #23698: The reassignment checker only cared
+// about the last assignment in a match arm body
+
+// Use an extra function to make sure no extra assignments
+// are introduced by macros in the match statement
+fn check_eq(x: i32, y: i32) {
+ assert_eq!(x, y);
+}
+
+#[allow(unused_assignments)]
+fn main() {
+ let mut x = Box::new(1);
+ match x {
+ y => {
+ x = Box::new(2);
+ let _tmp = 1; // This assignment used to throw off the reassignment checker
+ check_eq(*y, 1);
+ }
+ }
+}