Bad diagnostic in breaking labeled block?
Code
fn main() { let args: Vec<String> = std::env::args().collect(); let n = args.len(); let x = { print!(""); if n == 0 { break 1; } break 0; }; }
Current output
error[E0268]: `break` outside of a loop or labeled block --> hello.rs:7:7 | 7 | break 1; | ^^^^^^^ cannot `break` outside of a loop or labeled block | help: consider labeling this block to be able to break within it | 6 ~ if n == 0 'block: { 7 ~ break 'block 1; | error[E0268]: `break` outside of a loop or labeled block --> hello.rs:9:5 | 9 | break 0; | ^^^^^^^ cannot `break` outside of a loop or labeled block | help: consider labeling this block to be able to break within it | 4 ~ let x = 'block: { 5 | print!(""); ... 8 | } 9 ~ break 'block 0; | error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0268`.
Desired output
error[E0268]: `break` outside of a loop or labeled block --> hello.rs:9:5 | 9 | break 0; | ^^^^^^^ cannot `break` outside of a loop or labeled block | help: consider labeling this block to be able to break within it | 4 ~ let x = 'block: { 5 | print!(""); ... 8 | } 9 ~ break 'block 0; | error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0268`.
Rationale and extra context
The problem in the diagnostic is to mention the hint:
help: consider labeling this block to be able to break within it
|
6 ~ if n == 0 'block: {
7 ~ break 'block 1;
Which is wrong because a label cannot be set here after an if clause
Other cases
No response
Rust Version
rustc --version --verbose rustc 1.76.0 (07dca489a 2024-02-04) binary: rustc commit-hash: 07dca489ac2d933c78d3c5158e3f43beefeb02ce commit-date: 2024-02-04 host: x86_64-apple-darwin release: 1.76.0 LLVM version: 17.0.6
Anything else?
https://users.rust-lang.org/t/bad-diagnostic-in-breaking-labeled-block/109124