| // Check that or patterns are lowered correctly in `if let` and `while let` expressions. | |
| //@ run-pass | |
| fn main() { | |
| let mut opt = Some(3); | |
| let mut w = Vec::new(); | |
| while let Some(ref mut val @ (3 | 4 | 6)) = opt { | |
| w.push(*val); | |
| *val += 1; | |
| } | |
| assert_eq!(w, [3, 4]); | |
| if let &(None | Some(6 | 7)) = &opt { | |
| unreachable!(); | |
| } | |
| if let Some(x @ (4 | 5 | 6)) = opt { | |
| assert_eq!(x, 5); | |
| } else { | |
| unreachable!(); | |
| } | |
| } |