X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=clippy_lints%2Fsrc%2Farray_indexing.rs;h=399f93d08c7cd419641f715efa4e534db03fe83b;hb=778ce4dfd359eb8071ad76aa6447b23ce7a0c752;hp=46d13d6c853554ffc1df863abde8440df1d0ee86;hpb=caa76e119b5737e0e2275f7372396c1373c083a6;p=rust.git diff --git a/clippy_lints/src/array_indexing.rs b/clippy_lints/src/array_indexing.rs index 46d13d6c853..399f93d08c7 100644 --- a/clippy_lints/src/array_indexing.rs +++ b/clippy_lints/src/array_indexing.rs @@ -1,21 +1,20 @@ use rustc::lint::*; use rustc::middle::const_val::ConstVal; -use rustc::ty::TyArray; +use rustc::ty; use rustc_const_eval::EvalHint::ExprTypeChecked; use rustc_const_eval::eval_const_expr_partial; use rustc_const_math::ConstInt; -use rustc::hir::*; +use rustc::hir; use syntax::ast::RangeLimits; use utils::{self, higher}; -/// **What it does:** Check for out of bounds array indexing with a constant index. +/// **What it does:** Checks for out of bounds array indexing with a constant index. /// /// **Why is this bad?** This will always panic at runtime. /// /// **Known problems:** Hopefully none. /// /// **Example:** -/// /// ```rust /// let x = [1,2,3,4]; /// ... @@ -25,27 +24,25 @@ declare_lint! { pub OUT_OF_BOUNDS_INDEXING, Deny, - "out of bound constant indexing" + "out of bounds constant indexing" } -/// **What it does:** Check for usage of indexing or slicing. +/// **What it does:** Checks for usage of indexing or slicing. /// -/// **Why is this bad?** Usually, this can be safely allowed. However, -/// in some domains such as kernel development, a panic can cause the -/// whole operating system to crash. +/// **Why is this bad?** Usually, this can be safely allowed. However, in some +/// domains such as kernel development, a panic can cause the whole operating +/// system to crash. /// /// **Known problems:** Hopefully none. /// /// **Example:** -/// /// ```rust /// ... /// x[2]; /// &x[0..2]; /// ``` -declare_lint! { +declare_restriction_lint! { pub INDEXING_SLICING, - Allow, "indexing/slicing usage" } @@ -58,12 +55,12 @@ fn get_lints(&self) -> LintArray { } } -impl LateLintPass for ArrayIndexing { - fn check_expr(&mut self, cx: &LateContext, e: &Expr) { - if let ExprIndex(ref array, ref index) = e.node { +impl<'a, 'tcx> LateLintPass<'a, 'tcx> for ArrayIndexing { + fn check_expr(&mut self, cx: &LateContext<'a, 'tcx>, e: &'tcx hir::Expr) { + if let hir::ExprIndex(ref array, ref index) = e.node { // Array with known size can be checked statically - let ty = cx.tcx.expr_ty(array); - if let TyArray(_, size) = ty.sty { + let ty = cx.tcx.tables().expr_ty(array); + if let ty::TyArray(_, size) = ty.sty { let size = ConstInt::Infer(size as u64); // Index is a constant uint