From 2fd3093395d989bb8ada55440fb4101264e676e5 Mon Sep 17 00:00:00 2001 From: mcarton Date: Wed, 23 Dec 2015 11:25:44 +0100 Subject: [PATCH] Only run MATCH_OVERLAPPING_ARM on integral matches --- src/matches.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/matches.rs b/src/matches.rs index 3ece02c0374..053b6b072b5 100644 --- a/src/matches.rs +++ b/src/matches.rs @@ -98,7 +98,7 @@ impl LateLintPass for MatchPass { if let ExprMatch(ref ex, ref arms, MatchSource::Normal) = expr.node { check_single_match(cx, ex, arms, expr); check_match_bool(cx, ex, arms, expr); - check_overlapping_arms(cx, arms); + check_overlapping_arms(cx, ex, arms); } if let ExprMatch(ref ex, ref arms, source) = expr.node { check_match_ref_pats(cx, ex, arms, source, expr); @@ -187,8 +187,9 @@ fn check_match_bool(cx: &LateContext, ex: &Expr, arms: &[Arm], expr: &Expr) { } } -fn check_overlapping_arms(cx: &LateContext, arms: &[Arm]) { - if arms.len() >= 2 { +fn check_overlapping_arms(cx: &LateContext, ex: &Expr, arms: &[Arm]) { + if arms.len() >= 2 && + cx.tcx.expr_ty(ex).is_integral() { let ranges = all_ranges(cx, arms); let overlap = match type_ranges(&ranges) { TypedRanges::IntRanges(ranges) => overlapping(&ranges).map(|(start, end)| (start.span, end.span)),