| //@ build-pass |
| //@ compile-flags: -Zvalidate-mir |
| #![allow(incomplete_features)] |
| #![feature(loop_match)] |
| #![crate_type = "lib"] |
| |
| // Test that a #[loop_match] without an explicit break from the loop generates valid MIR. |
| |
| fn break_to_block_unit() -> u8 { |
| let mut state = 0; |
| #[loop_match] |
| loop { |
| state = 'blk: { |
| match state { |
| _ => 'b: { |
| break 'b 2; |
| } |
| } |
| } |
| } |
| } |
| |
| fn break_to_block_value() -> u8 { |
| let mut state = 0u8; |
| #[loop_match] |
| 'a: loop { |
| state = 'blk: { |
| match state { |
| _ => break 'blk state, |
| } |
| } |
| } |
| } |
| |
| fn infinite_a(mut state: u8) { |
| #[loop_match] |
| loop { |
| state = 'blk: { |
| match state { |
| a => a, |
| } |
| } |
| } |
| } |