diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2025-06-19 20:34:05 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-19 20:34:05 +0000 |
| commit | 59291a75dff663f4a0a6762eb5ebeeb764d8b3ec (patch) | |
| tree | fe2cca70b48e0dba49fabda878dd3f2736ab2c29 | |
| parent | db32d3980bd74eca6cea0a4b23bbe9039064823c (diff) | |
| parent | 4aa93a1129d68fe8107434d53b2e9c1c68ac61c1 (diff) | |
| download | rust-59291a75dff663f4a0a6762eb5ebeeb764d8b3ec.tar.gz rust-59291a75dff663f4a0a6762eb5ebeeb764d8b3ec.zip | |
Fix `clippy::question_mark` on let-else with cfg (#15082)
Fixes rust-lang/rust-clippy#13642 changelog: Fix false positive in [`question_mark`] when else branch of let-else contains `#[cfg]`
| -rw-r--r-- | clippy_lints/src/question_mark.rs | 1 | ||||
| -rw-r--r-- | tests/ui/question_mark.fixed | 12 | ||||
| -rw-r--r-- | tests/ui/question_mark.rs | 12 |
3 files changed, 25 insertions, 0 deletions
diff --git a/clippy_lints/src/question_mark.rs b/clippy_lints/src/question_mark.rs index c02e5e0621c..de12a25b03d 100644 --- a/clippy_lints/src/question_mark.rs +++ b/clippy_lints/src/question_mark.rs @@ -142,6 +142,7 @@ fn check_let_some_else_return_none(cx: &LateContext<'_>, stmt: &Stmt<'_>) { && let Some(ret) = find_let_else_ret_expression(els) && let Some(inner_pat) = pat_and_expr_can_be_question_mark(cx, pat, ret) && !span_contains_comment(cx.tcx.sess.source_map(), els.span) + && !span_contains_cfg(cx, els.span) { let mut applicability = Applicability::MaybeIncorrect; let init_expr_str = Sugg::hir_with_applicability(cx, init_expr, "..", &mut applicability).maybe_paren(); diff --git a/tests/ui/question_mark.fixed b/tests/ui/question_mark.fixed index 60dc1c101b6..8d6f5fbadca 100644 --- a/tests/ui/question_mark.fixed +++ b/tests/ui/question_mark.fixed @@ -453,3 +453,15 @@ fn const_in_pattern(x: Option<(i32, i32)>) -> Option<()> { None } + +fn issue_13642(x: Option<i32>) -> Option<()> { + let Some(x) = x else { + #[cfg(false)] + panic!(); + + #[cfg(true)] + return None; + }; + + None +} diff --git a/tests/ui/question_mark.rs b/tests/ui/question_mark.rs index 99d0122a98f..f13eee29c11 100644 --- a/tests/ui/question_mark.rs +++ b/tests/ui/question_mark.rs @@ -549,3 +549,15 @@ fn const_in_pattern(x: Option<(i32, i32)>) -> Option<()> { None } + +fn issue_13642(x: Option<i32>) -> Option<()> { + let Some(x) = x else { + #[cfg(false)] + panic!(); + + #[cfg(true)] + return None; + }; + + None +} |
