diff options
| author | Jason Newcomb <jsnewcomb@pm.me> | 2025-08-03 06:55:48 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-03 06:55:48 +0000 |
| commit | 88bcf1ca19236b2b51d55080d817e49ef2d8fd17 (patch) | |
| tree | dae9d4af63e29667c10d63f5b5f99a9e7ce27a1d /clippy_lints/src | |
| parent | fa09b86bfccb607e9ecb12c8376598d7439284ac (diff) | |
| parent | 8f6b43dd656743730d32f5f7ee5a768434d25189 (diff) | |
fix option-if-let-else lint (#15394)
some simple twists Fixes rust-lang/rust-clippy#15002 Fixes rust-lang/rust-clippy#15379 changelog: [`option_if_let_else`]: Don't remove raw pointer derefs in suggestions changelog: [`option_if_let_else`]: Don't suggest passing argless functions to `Result::map_or_else`
Diffstat (limited to 'clippy_lints/src')
| -rw-r--r-- | clippy_lints/src/option_if_let_else.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/clippy_lints/src/option_if_let_else.rs b/clippy_lints/src/option_if_let_else.rs index 9487cec87ef..3483f3081a5 100644 --- a/clippy_lints/src/option_if_let_else.rs +++ b/clippy_lints/src/option_if_let_else.rs @@ -127,7 +127,8 @@ fn try_get_option_occurrence<'tcx>( if_else: &'tcx Expr<'_>, ) -> Option<OptionOccurrence> { let cond_expr = match expr.kind { - ExprKind::Unary(UnOp::Deref, inner_expr) | ExprKind::AddrOf(_, _, inner_expr) => inner_expr, + ExprKind::AddrOf(_, _, inner_expr) => inner_expr, + ExprKind::Unary(UnOp::Deref, inner_expr) if !cx.typeck_results().expr_ty(inner_expr).is_raw_ptr() => inner_expr, _ => expr, }; let (inner_pat, is_result) = try_get_inner_pat_and_is_result(cx, pat)?; @@ -223,8 +224,8 @@ fn try_get_option_occurrence<'tcx>( let mut app = Applicability::Unspecified; - let (none_body, is_argless_call) = match none_body.kind { - ExprKind::Call(call_expr, []) if !none_body.span.from_expansion() => (call_expr, true), + let (none_body, can_omit_arg) = match none_body.kind { + ExprKind::Call(call_expr, []) if !none_body.span.from_expansion() && !is_result => (call_expr, true), _ => (none_body, false), }; @@ -241,7 +242,7 @@ fn try_get_option_occurrence<'tcx>( ), none_expr: format!( "{}{}", - if method_sugg == "map_or" || is_argless_call { + if method_sugg == "map_or" || can_omit_arg { "" } else if is_result { "|_| " |
