mirror of
https://github.com/rust-lang/rust.git
synced 2025-10-02 10:18:25 +00:00
48 lines
1.3 KiB
Rust
48 lines
1.3 KiB
Rust
// Test that a `#[const_continue]` that breaks to a normal labeled block (that
|
|
// is not part of a `#[loop_match]`) produces an error.
|
|
|
|
#![allow(incomplete_features)]
|
|
#![feature(loop_match)]
|
|
#![crate_type = "lib"]
|
|
|
|
fn const_continue_to_block() -> u8 {
|
|
let state = 0;
|
|
#[loop_match]
|
|
loop {
|
|
state = 'blk: {
|
|
match state {
|
|
0 => {
|
|
#[const_continue]
|
|
break 'blk 1;
|
|
}
|
|
_ => 'b: {
|
|
#[const_continue]
|
|
break 'b 2;
|
|
//~^ ERROR `#[const_continue]` must break to a labeled block that participates in a `#[loop_match]`
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
fn const_continue_to_shadowed_block() -> u8 {
|
|
let state = 0;
|
|
#[loop_match]
|
|
loop {
|
|
state = 'blk: {
|
|
match state {
|
|
0 => {
|
|
#[const_continue]
|
|
break 'blk 1;
|
|
}
|
|
_ => 'blk: {
|
|
//~^ WARN label name `'blk` shadows a label name that is already in scope
|
|
#[const_continue]
|
|
break 'blk 2;
|
|
//~^ ERROR `#[const_continue]` must break to a labeled block that participates in a `#[loop_match]`
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|