]> git.lizzy.rs Git - rust.git/blobdiff - clippy_lints/src/overflow_check_conditional.rs
update to the rust-PR that unblocks clippy
[rust.git] / clippy_lints / src / overflow_check_conditional.rs
index 632a0dc6314b8aa46c893a06684027f484c040c7..a09ff3bebf6837d86ea4d524beee09775b8b7ec9 100644 (file)
 /// a + b < a
 /// ```
 
-declare_lint!(pub OVERFLOW_CHECK_CONDITIONAL, Warn,
-              "Using overflow checks which are likely to panic");
+declare_lint! {
+    pub OVERFLOW_CHECK_CONDITIONAL,
+    Warn,
+    "overflow checks inspired by C which are likely to panic"
+}
 
 #[derive(Copy, Clone)]
 pub struct OverflowCheckConditional;
@@ -26,18 +29,18 @@ fn get_lints(&self) -> LintArray {
     }
 }
 
-impl LateLintPass for OverflowCheckConditional {
+impl<'a, 'tcx> LateLintPass<'a, 'tcx> for OverflowCheckConditional {
     // a + b < a, a > a + b, a < a - b, a - b > a
-    fn check_expr(&mut self, cx: &LateContext, expr: &Expr) {
+    fn check_expr(&mut self, cx: &LateContext<'a, 'tcx>, expr: &'tcx Expr) {
         if_let_chain! {[
             let Expr_::ExprBinary(ref op, ref first, ref second) = expr.node,
             let Expr_::ExprBinary(ref op2, ref ident1, ref ident2) = first.node,
-            let Expr_::ExprPath(_,ref path1) = ident1.node,
-            let Expr_::ExprPath(_, ref path2) = ident2.node,
-            let Expr_::ExprPath(_, ref path3) = second.node,
+            let Expr_::ExprPath(QPath::Resolved(_, ref path1)) = ident1.node,
+            let Expr_::ExprPath(QPath::Resolved(_, ref path2)) = ident2.node,
+            let Expr_::ExprPath(QPath::Resolved(_, ref path3)) = second.node,
             &path1.segments[0] == &path3.segments[0] || &path2.segments[0] == &path3.segments[0],
-            cx.tcx.expr_ty(ident1).is_integral(),
-            cx.tcx.expr_ty(ident2).is_integral()
+            cx.tcx.tables().expr_ty(ident1).is_integral(),
+            cx.tcx.tables().expr_ty(ident2).is_integral()
         ], {
             if let BinOp_::BiLt = op.node {
                 if let BinOp_::BiAdd = op2.node {
@@ -54,12 +57,12 @@ fn check_expr(&mut self, cx: &LateContext, expr: &Expr) {
         if_let_chain! {[
             let Expr_::ExprBinary(ref op, ref first, ref second) = expr.node,
             let Expr_::ExprBinary(ref op2, ref ident1, ref ident2) = second.node,
-            let Expr_::ExprPath(_,ref path1) = ident1.node,
-            let Expr_::ExprPath(_, ref path2) = ident2.node,
-            let Expr_::ExprPath(_, ref path3) = first.node,
+            let Expr_::ExprPath(QPath::Resolved(_, ref path1)) = ident1.node,
+            let Expr_::ExprPath(QPath::Resolved(_, ref path2)) = ident2.node,
+            let Expr_::ExprPath(QPath::Resolved(_, ref path3)) = first.node,
             &path1.segments[0] == &path3.segments[0] || &path2.segments[0] == &path3.segments[0],
-            cx.tcx.expr_ty(ident1).is_integral(),
-            cx.tcx.expr_ty(ident2).is_integral()
+            cx.tcx.tables().expr_ty(ident1).is_integral(),
+            cx.tcx.tables().expr_ty(ident2).is_integral()
         ], {
             if let BinOp_::BiGt = op.node {
                 if let BinOp_::BiAdd = op2.node {