| // 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); | |
| } | |
| } | |
| } |