about summary refs log tree commit diff
diff options
context:
space:
mode:
authorA.A.Abroskin <arkweid@evilmartians.com>2019-01-09 13:38:38 +0300
committerA.A.Abroskin <arkweid@evilmartians.com>2019-01-09 13:38:38 +0300
commit906b51637ca4bfa0cf68b909160937546234a2e2 (patch)
tree3be892951d4ab1dda07e89222f544064a751c105
parent96058616e2a5d8af709da67cb03c35715437a990 (diff)
downloadrust-906b51637ca4bfa0cf68b909160937546234a2e2.tar.gz
rust-906b51637ca4bfa0cf68b909160937546234a2e2.zip
change assert_checks to assertions_on_constants
-rw-r--r--CHANGELOG.md3
-rw-r--r--README.md4
-rw-r--r--clippy_lints/src/assertions_on_constants.rs (renamed from clippy_lints/src/assert_checks.rs)54
-rw-r--r--clippy_lints/src/lib.rs10
-rw-r--r--tests/ui/assert_checks.stderr18
-rw-r--r--tests/ui/assertions_on_constants.rs (renamed from tests/ui/assert_checks.rs)0
-rw-r--r--tests/ui/assertions_on_constants.stderr16
-rw-r--r--tests/ui/attrs.rs2
-rw-r--r--tests/ui/empty_line_after_outer_attribute.rs2
-rw-r--r--tests/ui/panic_unimplemented.rs2
10 files changed, 51 insertions, 60 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 603fb0b5b7b..69d0350eb09 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -616,6 +616,7 @@ All notable changes to this project will be documented in this file.
 [`absurd_extreme_comparisons`]: https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons
 [`almost_swapped`]: https://rust-lang.github.io/rust-clippy/master/index.html#almost_swapped
 [`approx_constant`]: https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant
+[`assertions_on_constants`]: https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants
 [`assign_op_pattern`]: https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern
 [`assign_ops`]: https://rust-lang.github.io/rust-clippy/master/index.html#assign_ops
 [`bad_bit_mask`]: https://rust-lang.github.io/rust-clippy/master/index.html#bad_bit_mask
@@ -679,10 +680,8 @@ All notable changes to this project will be documented in this file.
 [`expect_fun_call`]: https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call
 [`expl_impl_clone_on_copy`]: https://rust-lang.github.io/rust-clippy/master/index.html#expl_impl_clone_on_copy
 [`explicit_counter_loop`]: https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop
-[`explicit_false`]: https://rust-lang.github.io/rust-clippy/master/index.html#explicit_false
 [`explicit_into_iter_loop`]: https://rust-lang.github.io/rust-clippy/master/index.html#explicit_into_iter_loop
 [`explicit_iter_loop`]: https://rust-lang.github.io/rust-clippy/master/index.html#explicit_iter_loop
-[`explicit_true`]: https://rust-lang.github.io/rust-clippy/master/index.html#explicit_true
 [`explicit_write`]: https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write
 [`extend_from_slice`]: https://rust-lang.github.io/rust-clippy/master/index.html#extend_from_slice
 [`extra_unused_lifetimes`]: https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes
diff --git a/README.md b/README.md
index 658b2a70adc..751f0add8eb 100644
--- a/README.md
+++ b/README.md
@@ -8,11 +8,11 @@
 A collection of lints to catch common mistakes and improve your [Rust](https://github.com/rust-lang/rust) code.
 
 <<<<<<< HEAD
-[There are 290 lints included in this crate!](https://rust-lang.github.io/rust-clippy/master/index.html)
+[There are 291 lints included in this crate!](https://rust-lang.github.io/rust-clippy/master/index.html)
 ||||||| merged common ancestors
 [There are 291 lints included in this crate!](https://rust-lang.github.io/rust-clippy/master/index.html)
 =======
-[There are 293 lints included in this crate!](https://rust-lang.github.io/rust-clippy/master/index.html)
+[There are 291 lints included in this crate!](https://rust-lang.github.io/rust-clippy/master/index.html)
 >>>>>>> run ./util/dev update_lints
 
 We have a bunch of lint categories to allow you to choose how much Clippy is supposed to ~~annoy~~ help you:
diff --git a/clippy_lints/src/assert_checks.rs b/clippy_lints/src/assertions_on_constants.rs
index dcc11951b26..0068d6fa157 100644
--- a/clippy_lints/src/assert_checks.rs
+++ b/clippy_lints/src/assertions_on_constants.rs
@@ -11,50 +11,40 @@ use crate::rustc::hir::{Expr, ExprKind};
 use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
 use crate::rustc::{declare_tool_lint, lint_array};
 use crate::syntax::ast::LitKind;
-use crate::utils::{is_direct_expn_of, span_lint};
+use crate::utils::{is_direct_expn_of, span_lint, span_lint_and_sugg};
+use rustc_errors::Applicability;
 use if_chain::if_chain;
 
-/// **What it does:** Check explicit call assert!(true)
+/// **What it does:** Check explicit call assert!(true/false)
 ///
-/// **Why is this bad?** Will be optimized out by the compiler
-///
-/// **Known problems:** None
-///
-/// **Example:**
-/// ```rust
-/// assert!(true)
-/// ```
-declare_clippy_lint! {
-    pub EXPLICIT_TRUE,
-    correctness,
-    "assert!(true) will be optimized out by the compiler"
-}
-
-/// **What it does:** Check explicit call assert!(false)
-///
-/// **Why is this bad?** Should probably be replaced by a panic!() or unreachable!()
+/// **Why is this bad?** Will be optimized out by the compiler or should probably be replaced by a panic!() or unreachable!()
 ///
 /// **Known problems:** None
 ///
 /// **Example:**
 /// ```rust
 /// assert!(false)
+/// // or
+/// assert!(true)
+/// // or
+/// const B: bool = false;
+/// assert!(B)
 /// ```
 declare_clippy_lint! {
-    pub EXPLICIT_FALSE,
-    correctness,
-    "assert!(false) should probably be replaced by a panic!() or unreachable!()"
+    pub ASSERTIONS_ON_CONSTANTS,
+    style,
+    "assert!(true/false) will be optimized out by the compiler/should probably be replaced by a panic!() or unreachable!()"
 }
 
-pub struct AssertChecks;
+pub struct AssertionsOnConstants;
 
-impl LintPass for AssertChecks {
+impl LintPass for AssertionsOnConstants {
     fn get_lints(&self) -> LintArray {
-        lint_array![EXPLICIT_TRUE, EXPLICIT_FALSE]
+        lint_array![ASSERTIONS_ON_CONSTANTS]
     }
 }
 
-impl<'a, 'tcx> LateLintPass<'a, 'tcx> for AssertChecks {
+impl<'a, 'tcx> LateLintPass<'a, 'tcx> for AssertionsOnConstants {
     fn check_expr(&mut self, cx: &LateContext<'a, 'tcx>, e: &'tcx Expr) {
         if_chain! {
             if is_direct_expn_of(e.span, "assert").is_some();
@@ -63,12 +53,18 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for AssertChecks {
             then {
                 match inner.node {
                     LitKind::Bool(true) => {
-                        span_lint(cx, EXPLICIT_TRUE, e.span,
+                        span_lint(cx, ASSERTIONS_ON_CONSTANTS, e.span,
                             "assert!(true) will be optimized out by the compiler");
                     },
                     LitKind::Bool(false) => {
-                        span_lint(cx, EXPLICIT_FALSE, e.span,
-                            "assert!(false) should probably be replaced by a panic!() or unreachable!()");
+                        span_lint_and_sugg(
+                            cx,
+                            ASSERTIONS_ON_CONSTANTS,
+                            e.span,
+                            "assert!(false) should probably be replaced",
+                            "try",
+                            "panic!()".to_string(),
+                            Applicability::MachineApplicable);
                     },
                     _ => (),
                 }
diff --git a/clippy_lints/src/lib.rs b/clippy_lints/src/lib.rs
index 8af73a4f99b..192c9226b69 100644
--- a/clippy_lints/src/lib.rs
+++ b/clippy_lints/src/lib.rs
@@ -88,7 +88,7 @@ mod utils;
 // begin lints modules, do not remove this comment, it’s used in `update_lints`
 pub mod approx_const;
 pub mod arithmetic;
-pub mod assert_checks;
+pub mod assertions_on_constants;
 pub mod assign_ops;
 pub mod attrs;
 pub mod bit_mask;
@@ -487,7 +487,7 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
     reg.register_late_lint_pass(box ptr_offset_with_cast::Pass);
     reg.register_late_lint_pass(box redundant_clone::RedundantClone);
     reg.register_late_lint_pass(box slow_vector_initialization::Pass);
-    reg.register_late_lint_pass(box assert_checks::AssertChecks);
+    reg.register_late_lint_pass(box assertions_on_constants::AssertionsOnConstants);
 
     reg.register_lint_group("clippy::restriction", Some("clippy_restriction"), vec![
         arithmetic::FLOAT_ARITHMETIC,
@@ -565,8 +565,7 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
 
     reg.register_lint_group("clippy::all", Some("clippy"), vec![
         approx_const::APPROX_CONSTANT,
-        assert_checks::EXPLICIT_FALSE,
-        assert_checks::EXPLICIT_TRUE,
+        assertions_on_constants::ASSERTIONS_ON_CONSTANTS,
         assign_ops::ASSIGN_OP_PATTERN,
         assign_ops::MISREFACTORED_ASSIGN_OP,
         attrs::DEPRECATED_CFG_ATTR,
@@ -788,6 +787,7 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
     ]);
 
     reg.register_lint_group("clippy::style", Some("clippy_style"), vec![
+        assertions_on_constants::ASSERTIONS_ON_CONSTANTS,
         assign_ops::ASSIGN_OP_PATTERN,
         attrs::UNKNOWN_CLIPPY_LINTS,
         bit_mask::VERBOSE_BIT_MASK,
@@ -944,8 +944,6 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
 
     reg.register_lint_group("clippy::correctness", Some("clippy_correctness"), vec![
         approx_const::APPROX_CONSTANT,
-        assert_checks::EXPLICIT_FALSE,
-        assert_checks::EXPLICIT_TRUE,
         attrs::DEPRECATED_SEMVER,
         attrs::USELESS_ATTRIBUTE,
         bit_mask::BAD_BIT_MASK,
diff --git a/tests/ui/assert_checks.stderr b/tests/ui/assert_checks.stderr
deleted file mode 100644
index e2039941650..00000000000
--- a/tests/ui/assert_checks.stderr
+++ /dev/null
@@ -1,18 +0,0 @@
-error: assert!(true) will be optimized out by the compiler
-  --> $DIR/assert_checks.rs:11:5
-   |
-11 |     assert!(true);
-   |     ^^^^^^^^^^^^^^
-   |
-   = note: #[deny(clippy::explicit_true)] on by default
-
-error: assert!(false) should probably be replaced by a panic!() or unreachable!()
-  --> $DIR/assert_checks.rs:12:5
-   |
-12 |     assert!(false);
-   |     ^^^^^^^^^^^^^^^
-   |
-   = note: #[deny(clippy::explicit_false)] on by default
-
-error: aborting due to 2 previous errors
-
diff --git a/tests/ui/assert_checks.rs b/tests/ui/assertions_on_constants.rs
index 811046d060a..811046d060a 100644
--- a/tests/ui/assert_checks.rs
+++ b/tests/ui/assertions_on_constants.rs
diff --git a/tests/ui/assertions_on_constants.stderr b/tests/ui/assertions_on_constants.stderr
new file mode 100644
index 00000000000..33104ed2066
--- /dev/null
+++ b/tests/ui/assertions_on_constants.stderr
@@ -0,0 +1,16 @@
+error: assert!(true) will be optimized out by the compiler
+  --> $DIR/assertions_on_constants.rs:11:5
+   |
+LL |     assert!(true);
+   |     ^^^^^^^^^^^^^^
+   |
+   = note: `-D clippy::assertions-on-constants` implied by `-D warnings`
+
+error: assert!(false) should probably be replaced
+  --> $DIR/assertions_on_constants.rs:12:5
+   |
+LL |     assert!(false);
+   |     ^^^^^^^^^^^^^^^ help: try: `panic!()`
+
+error: aborting due to 2 previous errors
+
diff --git a/tests/ui/attrs.rs b/tests/ui/attrs.rs
index c0ea7329718..2c7f67d4505 100644
--- a/tests/ui/attrs.rs
+++ b/tests/ui/attrs.rs
@@ -8,7 +8,7 @@
 // except according to those terms.
 
 #![warn(clippy::inline_always, clippy::deprecated_semver)]
-#![allow(clippy::assert_checks::explicit_true)]
+#![allow(clippy::assertions_on_constants::assertions_on_constants)]
 #[inline(always)]
 fn test_attr_lint() {
     assert!(true)
diff --git a/tests/ui/empty_line_after_outer_attribute.rs b/tests/ui/empty_line_after_outer_attribute.rs
index a6e6adcac5c..2bb5037614d 100644
--- a/tests/ui/empty_line_after_outer_attribute.rs
+++ b/tests/ui/empty_line_after_outer_attribute.rs
@@ -8,7 +8,7 @@
 // except according to those terms.
 
 #![warn(clippy::empty_line_after_outer_attr)]
-#![allow(clippy::assert_checks::explicit_true)]
+#![allow(clippy::assertions_on_constants::assertions_on_constants)]
 // This should produce a warning
 #[crate_type = "lib"]
 
diff --git a/tests/ui/panic_unimplemented.rs b/tests/ui/panic_unimplemented.rs
index 3c568658a6c..309a22dc215 100644
--- a/tests/ui/panic_unimplemented.rs
+++ b/tests/ui/panic_unimplemented.rs
@@ -8,7 +8,7 @@
 // except according to those terms.
 
 #![warn(clippy::panic_params, clippy::unimplemented)]
-#![allow(clippy::assert_checks::explicit_true)]
+#![allow(clippy::assertions_on_constants::assertions_on_constants)]
 fn missing() {
     if true {
         panic!("{}");