]> git.lizzy.rs Git - rust.git/commitdiff
Handle all types in to_const_range
authorEnrico Schmitz <enrico@schmitz.link>
Wed, 1 Mar 2017 15:17:30 +0000 (16:17 +0100)
committerEnrico Schmitz <es@mdtm.de>
Wed, 1 Mar 2017 15:17:30 +0000 (16:17 +0100)
clippy_lints/src/array_indexing.rs

index 068fd782cf6760317dcad1c18cae1bf75a7e3b0e..1cd57e632ca71d2487b23a68b40882b8f8b195ac 100644 (file)
@@ -2,7 +2,7 @@
 use rustc::middle::const_val::ConstVal;
 use rustc::ty;
 use rustc_const_eval::ConstContext;
-use rustc_const_math::{ConstUsize,ConstInt};
+use rustc_const_math::{ConstUsize,ConstIsize,ConstInt};
 use rustc::hir;
 use syntax::ast::RangeLimits;
 use utils::{self, higher};
@@ -122,7 +122,24 @@ fn to_const_range(
     let end = match *end {
         Some(Some(ConstVal::Integral(x))) => {
             if limits == RangeLimits::Closed {
-                (x + ConstInt::U8(1)).expect("such a big array is not realistic")
+                match x {
+                    ConstInt::U8(_) => (x + ConstInt::U8(1)),
+                    ConstInt::U16(_) => (x + ConstInt::U16(1)),
+                    ConstInt::U32(_) => (x + ConstInt::U32(1)),
+                    ConstInt::U64(_) => (x + ConstInt::U64(1)),
+                    ConstInt::U128(_) => (x + ConstInt::U128(1)),
+                    ConstInt::Usize(ConstUsize::Us16(_)) => (x + ConstInt::Usize(ConstUsize::Us16(1))),
+                    ConstInt::Usize(ConstUsize::Us32(_)) => (x + ConstInt::Usize(ConstUsize::Us32(1))),
+                    ConstInt::Usize(ConstUsize::Us64(_)) => (x + ConstInt::Usize(ConstUsize::Us64(1))),
+                    ConstInt::I8(_) => (x + ConstInt::I8(1)),
+                    ConstInt::I16(_) => (x + ConstInt::I16(1)),
+                    ConstInt::I32(_) => (x + ConstInt::I32(1)),
+                    ConstInt::I64(_) => (x + ConstInt::I64(1)),
+                    ConstInt::I128(_) => (x + ConstInt::I128(1)),
+                    ConstInt::Isize(ConstIsize::Is16(_)) => (x + ConstInt::Isize(ConstIsize::Is16(1))),
+                    ConstInt::Isize(ConstIsize::Is32(_)) => (x + ConstInt::Isize(ConstIsize::Is32(1))),
+                    ConstInt::Isize(ConstIsize::Is64(_)) => (x + ConstInt::Isize(ConstIsize::Is64(1))),
+                }.expect("such a big array is not realistic")
             } else {
                 x
             }