| //@ 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, | |
| } | |
| } | |
| } | |
| } |