diff options
| author | bors <bors@rust-lang.org> | 2023-03-14 13:30:21 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-03-14 13:30:21 +0000 |
| commit | c465bf7f67ff12b9d7246a26ea83f66f0de228da (patch) | |
| tree | a7c14837cd0c1662914615f452860dcc92bb271b | |
| parent | 5941616ddc63d52421c8daa026e4cb7a3a888474 (diff) | |
| parent | 6631480a7b7cb7b3e7d53c9c4cd7915f7ebc3110 (diff) | |
| download | rust-c465bf7f67ff12b9d7246a26ea83f66f0de228da.tar.gz rust-c465bf7f67ff12b9d7246a26ea83f66f0de228da.zip | |
Auto merge of #10499 - blyxyas:fix-almost_swapped, r=giraffate
Fix `almost_swapped` false positive (`let mut a = b; a = a`) Fixes `2` in #10421 changelog: [`almost_swapped`]: Fix false positive when a variable is changed to itself. (`a = a`)
| -rw-r--r-- | clippy_lints/src/swap.rs | 1 | ||||
| -rw-r--r-- | tests/ui/swap.fixed | 8 | ||||
| -rw-r--r-- | tests/ui/swap.rs | 8 |
3 files changed, 17 insertions, 0 deletions
diff --git a/clippy_lints/src/swap.rs b/clippy_lints/src/swap.rs index 1aeac724ab1..5087c19e5f3 100644 --- a/clippy_lints/src/swap.rs +++ b/clippy_lints/src/swap.rs @@ -190,6 +190,7 @@ fn check_suspicious_swap(cx: &LateContext<'_>, block: &Block<'_>) { && first.span.eq_ctxt(second.span) && is_same(cx, lhs0, rhs1) && is_same(cx, lhs1, rhs0) + && !is_same(cx, lhs1, rhs1) // Ignore a = b; a = a (#10421) && let Some(lhs_sugg) = match &lhs0 { ExprOrIdent::Expr(expr) => Sugg::hir_opt(cx, expr), ExprOrIdent::Ident(ident) => Some(Sugg::NonParen(ident.as_str().into())), diff --git a/tests/ui/swap.fixed b/tests/ui/swap.fixed index 04008c0d9b3..775b0dbde88 100644 --- a/tests/ui/swap.fixed +++ b/tests/ui/swap.fixed @@ -186,3 +186,11 @@ const fn issue_9864(mut u: u32) -> u32 { v = temp; u + v } + +#[allow(clippy::let_and_return)] +const fn issue_10421(x: u32) -> u32 { + let a = x; + let a = a; + let a = a; + a +} diff --git a/tests/ui/swap.rs b/tests/ui/swap.rs index ef8a81c8341..bc9a78b49c7 100644 --- a/tests/ui/swap.rs +++ b/tests/ui/swap.rs @@ -215,3 +215,11 @@ const fn issue_9864(mut u: u32) -> u32 { v = temp; u + v } + +#[allow(clippy::let_and_return)] +const fn issue_10421(x: u32) -> u32 { + let a = x; + let a = a; + let a = a; + a +} |
