diff options
| author | Aleksei Latyshev <alex_700_95@mail.ru> | 2020-11-04 21:16:25 +0300 |
|---|---|---|
| committer | Aleksei Latyshev <alex_700_95@mail.ru> | 2020-11-28 20:28:07 +0300 |
| commit | e266708c42dd3d9489586e65b9c6cd1bee0046d5 (patch) | |
| tree | 08bc4c64cef2911c593a2ac6b146c8b2d1ad9884 | |
| parent | 7a73a256223600926f1053fa63762b7d6375c9bc (diff) | |
| download | rust-e266708c42dd3d9489586e65b9c6cd1bee0046d5.tar.gz rust-e266708c42dd3d9489586e65b9c6cd1bee0046d5.zip | |
do not trigger MATCH_LIKE_MATCHES_MACRO lint with attrs
- it can't be solved completely for attrs evaluated into `false` - change applicability to MaybeIncorrect and mention it in docs
| -rw-r--r-- | clippy_lints/src/matches.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/clippy_lints/src/matches.rs b/clippy_lints/src/matches.rs index d695af4de21..c49abbf781e 100644 --- a/clippy_lints/src/matches.rs +++ b/clippy_lints/src/matches.rs @@ -459,7 +459,8 @@ declare_clippy_lint! { /// /// **Why is this bad?** Readability and needless complexity. /// - /// **Known problems:** None + /// **Known problems:** It can be FP triggered, when some arms have `cfg` + /// attributes, which evaluate into `false`. /// /// **Example:** /// ```rust @@ -1167,13 +1168,16 @@ fn find_matches_sugg(cx: &LateContext<'_>, ex: &Expr<'_>, arms: &[Arm<'_>], expr if b0 != b1; let if_guard = &b0_arms[0].guard; if if_guard.is_none() || b0_arms.len() == 1; + if b0_arms[0].attrs.is_empty(); if b0_arms[1..].iter() .all(|arm| { find_bool_lit(&arm.body.kind, desugared).map_or(false, |b| b == b0) && - arm.guard.is_none() + arm.guard.is_none() && arm.attrs.is_empty() }); then { - let mut applicability = Applicability::MachineApplicable; + // The suggestion may be incorrect, because some arms can have `cfg` attributes + // evaluated into `false` and so such arms will be stripped before. + let mut applicability = Applicability::MaybeIncorrect; let pat = { use itertools::Itertools as _; b0_arms.iter() |
