diff options
| author | Kartavya Vashishtha <sendtokartavya@gmail.com> | 2022-11-12 20:36:30 +0530 |
|---|---|---|
| committer | Kartavya Vashishtha <sendtokartavya@gmail.com> | 2022-11-12 20:36:30 +0530 |
| commit | 989986144c889051eb3014cc1fdc0891bbb483f5 (patch) | |
| tree | 52fd50e8ba911304a37b8379096596116352de9f | |
| parent | cad0d3d6da87b6e34a973a6dd6b34cfedeab3ea6 (diff) | |
| download | rust-989986144c889051eb3014cc1fdc0891bbb483f5.tar.gz rust-989986144c889051eb3014cc1fdc0891bbb483f5.zip | |
fix never_loop false positive
on unconditional break to internal labeled block ref #9831
| -rw-r--r-- | clippy_lints/src/loops/never_loop.rs | 3 | ||||
| -rw-r--r-- | tests/ui/never_loop.rs | 12 |
2 files changed, 14 insertions, 1 deletions
diff --git a/clippy_lints/src/loops/never_loop.rs b/clippy_lints/src/loops/never_loop.rs index 16b00ad6637..abb18187ef1 100644 --- a/clippy_lints/src/loops/never_loop.rs +++ b/clippy_lints/src/loops/never_loop.rs @@ -169,7 +169,8 @@ fn never_loop_expr(expr: &Expr<'_>, main_loop_id: HirId) -> NeverLoopResult { combine_seq(e, arms) } }, - ExprKind::Block(b, _) => never_loop_block(b, main_loop_id), + ExprKind::Block(b, None) => never_loop_block(b, main_loop_id), + ExprKind::Block(b, Some(_label)) => absorb_break(never_loop_block(b, main_loop_id)), ExprKind::Continue(d) => { let id = d .target_id diff --git a/tests/ui/never_loop.rs b/tests/ui/never_loop.rs index 3dbef19890e..86a5d03f765 100644 --- a/tests/ui/never_loop.rs +++ b/tests/ui/never_loop.rs @@ -229,6 +229,18 @@ pub fn test18() { }; } +// Issue #9831: unconditional break to internal labeled block +pub fn test19() { + fn thing(iter: impl Iterator) { + for _ in iter { + 'b: { + // error goes away if we just have the block's value be (). + break 'b; + } + } + } +} + fn main() { test1(); test2(); |
