diff options
| author | bors <bors@rust-lang.org> | 2022-11-13 15:44:14 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-11-13 15:44:14 +0000 |
| commit | a5995279fb896c87b94cef1f34fb4a17d87eaae7 (patch) | |
| tree | 0776586ed3d656f041a068f8716e2c33bb07f4f0 | |
| parent | 493b78885abfcc8daadf0603c34d63258f412c97 (diff) | |
| parent | 989986144c889051eb3014cc1fdc0891bbb483f5 (diff) | |
| download | rust-a5995279fb896c87b94cef1f34fb4a17d87eaae7.tar.gz rust-a5995279fb896c87b94cef1f34fb4a17d87eaae7.zip | |
Auto merge of #9837 - DesmondWillowbrook:never_loop, r=dswij
fix never_loop false positive fixes #9831 changelog: [`never_loop`]: fixed false positive on unconditional break in internal labeled block
| -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(); |
