about summary refs log tree commit diff
diff options
context:
space:
mode:
authorb-naber <bn263@gmx.de>2022-04-06 10:12:42 +0200
committerb-naber <bn263@gmx.de>2022-04-06 10:43:58 +0200
commit2f780758099bd649e8b9434449ec5e303e31e1aa (patch)
tree6ce5a7afee47015abb3609cf8a7f304726d6ca30
parentbca346b90b3423de3d333960f864d379b3cd7c0f (diff)
downloadrust-2f780758099bd649e8b9434449ec5e303e31e1aa.tar.gz
rust-2f780758099bd649e8b9434449ec5e303e31e1aa.zip
get rid of visit_constant in thir visitor
-rw-r--r--clippy_lints/src/matches/overlapping_arms.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/clippy_lints/src/matches/overlapping_arms.rs b/clippy_lints/src/matches/overlapping_arms.rs
index b5fa847451d..c0b3e95b185 100644
--- a/clippy_lints/src/matches/overlapping_arms.rs
+++ b/clippy_lints/src/matches/overlapping_arms.rs
@@ -1,4 +1,4 @@
-use clippy_utils::consts::{constant, constant_full_int, FullInt};
+use clippy_utils::consts::{constant, constant_full_int, miri_to_const, FullInt};
 use clippy_utils::diagnostics::span_lint_and_note;
 use core::cmp::Ordering;
 use rustc_hir::{Arm, Expr, PatKind, RangeEnd};
@@ -32,15 +32,16 @@ fn all_ranges<'tcx>(cx: &LateContext<'tcx>, arms: &'tcx [Arm<'_>], ty: Ty<'tcx>)
         .filter_map(|arm| {
             if let Arm { pat, guard: None, .. } = *arm {
                 if let PatKind::Range(ref lhs, ref rhs, range_end) = pat.kind {
-                    let lhs_val = match lhs {
-                        Some(lhs) => constant(cx, cx.typeck_results(), lhs)?.0.int_value(cx, ty)?,
-                        None => FullInt::U(ty.numeric_min_val(cx.tcx)?),
+                    let lhs_const = match lhs {
+                        Some(lhs) => constant(cx, cx.typeck_results(), lhs)?.0,
+                        None => miri_to_const(ty.numeric_min_val(cx.tcx)?)?,
                     };
-                    let rhs_val = match rhs {
-                        Some(rhs) => constant(cx, cx.typeck_results(), rhs)?.0.int_value(cx, ty)?,
-                        None => FullInt::U(ty.numeric_max_val(cx.tcx)?),
+                    let rhs_const = match rhs {
+                        Some(rhs) => constant(cx, cx.typeck_results(), rhs)?.0,
+                        None => miri_to_const(ty.numeric_max_val(cx.tcx)?)?,
                     };
-
+                    let lhs_val = lhs_const.int_value(cx, ty)?;
+                    let rhs_val = rhs_const.int_value(cx, ty)?;
                     let rhs_bound = match range_end {
                         RangeEnd::Included => EndBound::Included(rhs_val),
                         RangeEnd::Excluded => EndBound::Excluded(rhs_val),