]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/clippy_lints/src/matches/wild_in_or_pats.rs
Rollup merge of #100767 - kadiwa4:escape_ascii, r=jackh726
[rust.git] / src / tools / clippy / clippy_lints / src / matches / wild_in_or_pats.rs
1 use clippy_utils::diagnostics::span_lint_and_help;
2 use clippy_utils::is_wild;
3 use rustc_hir::{Arm, PatKind};
4 use rustc_lint::LateContext;
5
6 use super::WILDCARD_IN_OR_PATTERNS;
7
8 pub(crate) fn check(cx: &LateContext<'_>, arms: &[Arm<'_>]) {
9     for arm in arms {
10         if let PatKind::Or(fields) = arm.pat.kind {
11             // look for multiple fields in this arm that contains at least one Wild pattern
12             if fields.len() > 1 && fields.iter().any(is_wild) {
13                 span_lint_and_help(
14                     cx,
15                     WILDCARD_IN_OR_PATTERNS,
16                     arm.pat.span,
17                     "wildcard pattern covers any other pattern as it will match anyway",
18                     None,
19                     "consider handling `_` separately",
20                 );
21             }
22         }
23     }
24 }