// Test that `#[loop_match]` supports or-patterns. //@ run-pass #![allow(incomplete_features)] #![feature(loop_match)] #[derive(Debug, Clone, Copy, PartialEq, Eq)] enum State { A, B, C, D, } fn main() { let mut states = vec![]; let mut first = true; let mut state = State::A; #[loop_match] 'a: loop { state = 'blk: { match state { State::A => { states.push(state); if first { #[const_continue] break 'blk State::B; } else { #[const_continue] break 'blk State::D; } } State::B | State::D => { states.push(state); if first { first = false; #[const_continue] break 'blk State::A; } else { #[const_continue] break 'blk State::C; } } State::C => { states.push(state); break 'a; } } } } assert_eq!(states, [State::A, State::B, State::A, State::D, State::C]); }