diff options
| author | bors <bors@rust-lang.org> | 2024-01-27 17:27:38 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-01-27 17:27:38 +0000 |
| commit | 18e1f25a9f503de065fbe5cbc328954e0ae112cd (patch) | |
| tree | 89d532a9466bf647af5e8e69e17038a47ad256a7 | |
| parent | 85e08cd3b9c97dc8cd7efe6cba2e4015dfa74e28 (diff) | |
| parent | ff5afac6167f1af9413bc8bc7a95626a91a489f2 (diff) | |
| download | rust-18e1f25a9f503de065fbe5cbc328954e0ae112cd.tar.gz rust-18e1f25a9f503de065fbe5cbc328954e0ae112cd.zip | |
Auto merge of #12206 - y21:issue12205, r=Alexendoo
[`never_loop`]: recognize desugared `try` blocks Fixes #12205 The old code assumed that only blocks with an explicit label can be jumped to (using `break`). This is mostly correct except for `try` desugaring, where the `?` operator is rewritten to a `break` to that block, even without a label on the block. `Block::targeted_by_break` is a little more accurate than just checking if a block has a label in that regard, so we should just use that instead changelog: [`never_loop`]: avoid linting when `?` is used inside of a try block
| -rw-r--r-- | clippy_lints/src/loops/never_loop.rs | 6 | ||||
| -rw-r--r-- | tests/ui/never_loop.rs | 11 |
2 files changed, 13 insertions, 4 deletions
diff --git a/clippy_lints/src/loops/never_loop.rs b/clippy_lints/src/loops/never_loop.rs index 62bc663191f..245a903f998 100644 --- a/clippy_lints/src/loops/never_loop.rs +++ b/clippy_lints/src/loops/never_loop.rs @@ -201,12 +201,12 @@ fn never_loop_expr<'tcx>( }) }) }, - ExprKind::Block(b, l) => { - if l.is_some() { + ExprKind::Block(b, _) => { + if b.targeted_by_break { local_labels.push((b.hir_id, false)); } let ret = never_loop_block(cx, b, local_labels, main_loop_id); - let jumped_to = l.is_some() && local_labels.pop().unwrap().1; + let jumped_to = b.targeted_by_break && local_labels.pop().unwrap().1; match ret { NeverLoopResult::Diverging if jumped_to => NeverLoopResult::Normal, _ => ret, diff --git a/tests/ui/never_loop.rs b/tests/ui/never_loop.rs index c67a6d4494e..92f173d9db4 100644 --- a/tests/ui/never_loop.rs +++ b/tests/ui/never_loop.rs @@ -1,4 +1,4 @@ -#![feature(inline_const)] +#![feature(inline_const, try_blocks)] #