Skip to content

Commit 7ffe1ff

Browse files
committed
Parse a pattern with no arm
1 parent 3a76090 commit 7ffe1ff

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed

clippy_lints/src/non_expressive_names.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,9 @@ impl<'a, 'tcx> Visitor<'tcx> for SimilarNamesLocalVisitor<'a, 'tcx> {
341341

342342
self.apply(|this| {
343343
SimilarNamesNameVisitor(this).visit_pat(&arm.pat);
344-
this.apply(|this| walk_expr(this, &arm.body));
344+
if let Some(body) = &arm.body {
345+
this.apply(|this| walk_expr(this, body));
346+
}
345347
});
346348

347349
self.check_single_char_names();

clippy_lints/src/redundant_else.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,9 @@ impl<'ast> Visitor<'ast> for BreakVisitor {
105105
fn visit_expr(&mut self, expr: &'ast Expr) {
106106
self.is_break = match expr.kind {
107107
ExprKind::Break(..) | ExprKind::Continue(..) | ExprKind::Ret(..) => true,
108-
ExprKind::Match(_, ref arms) => arms.iter().all(|arm| self.check_expr(&arm.body)),
108+
ExprKind::Match(_, ref arms) => arms.iter().all(|arm|
109+
arm.body.is_none() || arm.body.as_deref().is_some_and(|body| self.check_expr(body))
110+
),
109111
ExprKind::If(_, ref then, Some(ref els)) => self.check_block(then) && self.check_expr(els),
110112
ExprKind::If(_, _, None)
111113
// ignore loops for simplicity

clippy_utils/src/ast_utils.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ pub fn eq_field(l: &ExprField, r: &ExprField) -> bool {
236236
pub fn eq_arm(l: &Arm, r: &Arm) -> bool {
237237
l.is_placeholder == r.is_placeholder
238238
&& eq_pat(&l.pat, &r.pat)
239-
&& eq_expr(&l.body, &r.body)
239+
&& eq_expr_opt(&l.body, &r.body)
240240
&& eq_expr_opt(&l.guard, &r.guard)
241241
&& over(&l.attrs, &r.attrs, eq_attr)
242242
}

0 commit comments

Comments
 (0)