]> git.lizzy.rs Git - rust.git/commitdiff
deprecate invalid_ref lint
authorRalf Jung <post@ralfj.de>
Sun, 11 Aug 2019 07:30:20 +0000 (09:30 +0200)
committerRalf Jung <post@ralfj.de>
Sun, 11 Aug 2019 07:31:55 +0000 (09:31 +0200)
clippy_lints/src/deprecated_lints.rs
clippy_lints/src/invalid_ref.rs [deleted file]
clippy_lints/src/lib.rs
clippy_lints/src/utils/paths.rs
tests/ui/invalid_ref.rs [deleted file]
tests/ui/invalid_ref.stderr [deleted file]

index 62cef778917b984083d1c69f7bda6ca6db06a770..0140cf861ac9fdd67ce21b33872f84743cb87085 100644 (file)
@@ -113,3 +113,12 @@ macro_rules! declare_deprecated_lint {
     pub UNSAFE_VECTOR_INITIALIZATION,
     "the replacement suggested by this lint had substantially different behavior"
 }
+
+/// **What it does:** Nothing. This lint has been deprecated.
+///
+/// **Deprecation reason:** This lint has been superseded by the warn-by-default
+/// `invalid_value` rustc lint.
+declare_clippy_lint! {
+    pub INVALID_REF,
+    "superseded by rustc lint `invalid_value`"
+}
diff --git a/clippy_lints/src/invalid_ref.rs b/clippy_lints/src/invalid_ref.rs
deleted file mode 100644 (file)
index 8f9ccae..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-use crate::utils::{match_def_path, paths, span_help_and_lint};
-use if_chain::if_chain;
-use rustc::hir::*;
-use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
-use rustc::ty;
-use rustc::{declare_lint_pass, declare_tool_lint};
-
-declare_clippy_lint! {
-    /// **What it does:** Checks for creation of references to zeroed or uninitialized memory.
-    ///
-    /// **Why is this bad?** Creation of null references is undefined behavior.
-    ///
-    /// **Known problems:** None.
-    ///
-    /// **Example:**
-    /// ```no_run
-    /// let bad_ref: &usize = unsafe { std::mem::zeroed() };
-    /// ```
-    pub INVALID_REF,
-    correctness,
-    "creation of invalid reference"
-}
-
-const ZERO_REF_SUMMARY: &str = "reference to zeroed memory";
-const UNINIT_REF_SUMMARY: &str = "reference to uninitialized memory";
-const HELP: &str = "Creation of a null reference is undefined behavior; \
-                    see https://doc.rust-lang.org/reference/behavior-considered-undefined.html";
-
-declare_lint_pass!(InvalidRef => [INVALID_REF]);
-
-impl<'a, 'tcx> LateLintPass<'a, 'tcx> for InvalidRef {
-    fn check_expr(&mut self, cx: &LateContext<'a, 'tcx>, expr: &'tcx Expr) {
-        if_chain! {
-            if let ExprKind::Call(ref path, ref args) = expr.node;
-            if let ExprKind::Path(ref qpath) = path.node;
-            if args.len() == 0;
-            if let ty::Ref(..) = cx.tables.expr_ty(expr).sty;
-            if let Some(def_id) = cx.tables.qpath_res(qpath, path.hir_id).opt_def_id();
-            then {
-                let msg = if match_def_path(cx, def_id, &paths::MEM_ZEROED) |
-                             match_def_path(cx, def_id, &paths::INIT)
-                {
-                    ZERO_REF_SUMMARY
-                } else if match_def_path(cx, def_id, &paths::MEM_UNINIT) |
-                          match_def_path(cx, def_id, &paths::UNINIT)
-                {
-                    UNINIT_REF_SUMMARY
-                } else {
-                    return;
-                };
-                span_help_and_lint(cx, INVALID_REF, expr.span, msg, HELP);
-            }
-        }
-    }
-}
index 258be38e48b16c79f80206359466bd304e6e695b..1ab943c5923b6049921060ccec62fb2df8a69391 100644 (file)
@@ -200,7 +200,6 @@ macro_rules! declare_clippy_lint {
 pub mod inline_fn_without_body;
 pub mod int_plus_one;
 pub mod integer_division;
-pub mod invalid_ref;
 pub mod items_after_statements;
 pub mod large_enum_variant;
 pub mod len_zero;
@@ -558,7 +557,6 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
     reg.register_late_lint_pass(box bytecount::ByteCount);
     reg.register_late_lint_pass(box infinite_iter::InfiniteIter);
     reg.register_late_lint_pass(box inline_fn_without_body::InlineFnWithoutBody);
-    reg.register_late_lint_pass(box invalid_ref::InvalidRef);
     reg.register_late_lint_pass(box identity_conversion::IdentityConversion::default());
     reg.register_late_lint_pass(box types::ImplicitHasher);
     reg.register_early_lint_pass(box redundant_static_lifetimes::RedundantStaticLifetimes);
@@ -736,7 +734,6 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
         inherent_to_string::INHERENT_TO_STRING_SHADOW_DISPLAY,
         inline_fn_without_body::INLINE_FN_WITHOUT_BODY,
         int_plus_one::INT_PLUS_ONE,
-        invalid_ref::INVALID_REF,
         large_enum_variant::LARGE_ENUM_VARIANT,
         len_zero::LEN_WITHOUT_IS_EMPTY,
         len_zero::LEN_ZERO,
@@ -1094,7 +1091,6 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
         infinite_iter::INFINITE_ITER,
         inherent_to_string::INHERENT_TO_STRING_SHADOW_DISPLAY,
         inline_fn_without_body::INLINE_FN_WITHOUT_BODY,
-        invalid_ref::INVALID_REF,
         literal_representation::MISTYPED_LITERAL_SUFFIXES,
         loops::FOR_LOOP_OVER_OPTION,
         loops::FOR_LOOP_OVER_RESULT,
index e08ff3e9705bb408ec7812ec79022e30776ba9b2..62b22afff95be2260f2ef89ea98e9168ff68e5b2 100644 (file)
@@ -37,7 +37,6 @@
 pub const HASHSET: [&str; 5] = ["std", "collections", "hash", "set", "HashSet"];
 pub const INDEX: [&str; 3] = ["core", "ops", "Index"];
 pub const INDEX_MUT: [&str; 3] = ["core", "ops", "IndexMut"];
-pub const INIT: [&str; 4] = ["core", "intrinsics", "", "init"];
 pub const INTO: [&str; 3] = ["core", "convert", "Into"];
 pub const INTO_ITERATOR: [&str; 5] = ["core", "iter", "traits", "collect", "IntoIterator"];
 pub const IO_READ: [&str; 3] = ["std", "io", "Read"];
@@ -50,8 +49,6 @@
 pub const MEM_DISCRIMINANT: [&str; 3] = ["core", "mem", "discriminant"];
 pub const MEM_FORGET: [&str; 3] = ["core", "mem", "forget"];
 pub const MEM_REPLACE: [&str; 3] = ["core", "mem", "replace"];
-pub const MEM_UNINIT: [&str; 3] = ["core", "mem", "uninitialized"];
-pub const MEM_ZEROED: [&str; 3] = ["core", "mem", "zeroed"];
 pub const MUTEX: [&str; 4] = ["std", "sync", "mutex", "Mutex"];
 pub const OPEN_OPTIONS: [&str; 3] = ["std", "fs", "OpenOptions"];
 pub const OPS_MODULE: [&str; 2] = ["core", "ops"];
 pub const TRANSMUTE: [&str; 4] = ["core", "intrinsics", "", "transmute"];
 pub const TRY_FROM_ERROR: [&str; 4] = ["std", "ops", "Try", "from_error"];
 pub const TRY_INTO_RESULT: [&str; 4] = ["std", "ops", "Try", "into_result"];
-pub const UNINIT: [&str; 4] = ["core", "intrinsics", "", "uninit"];
 pub const VEC: [&str; 3] = ["alloc", "vec", "Vec"];
 pub const VEC_DEQUE: [&str; 4] = ["alloc", "collections", "vec_deque", "VecDeque"];
 pub const VEC_FROM_ELEM: [&str; 3] = ["alloc", "vec", "from_elem"];
diff --git a/tests/ui/invalid_ref.rs b/tests/ui/invalid_ref.rs
deleted file mode 100644 (file)
index d59bd51..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#![allow(deprecated, unused)]
-#![feature(core_intrinsics)]
-
-extern crate core;
-use std::intrinsics::init;
-
-fn main() {
-    let x = 1;
-    unsafe {
-        ref_to_zeroed_std(&x);
-        ref_to_zeroed_core(&x);
-        ref_to_zeroed_intr(&x);
-        ref_to_uninit_std(&x);
-        ref_to_uninit_core(&x);
-        some_ref();
-        std_zeroed_no_ref();
-        core_zeroed_no_ref();
-        intr_init_no_ref();
-    }
-}
-
-unsafe fn ref_to_zeroed_std<T: ?Sized>(t: &T) {
-    let ref_zero: &T = std::mem::zeroed(); // warning
-}
-
-unsafe fn ref_to_zeroed_core<T: ?Sized>(t: &T) {
-    let ref_zero: &T = core::mem::zeroed(); // warning
-}
-
-unsafe fn ref_to_zeroed_intr<T: ?Sized>(t: &T) {
-    let ref_zero: &T = std::intrinsics::init(); // warning
-}
-
-unsafe fn ref_to_uninit_std<T: ?Sized>(t: &T) {
-    let ref_uninit: &T = std::mem::uninitialized(); // warning
-}
-
-unsafe fn ref_to_uninit_core<T: ?Sized>(t: &T) {
-    let ref_uninit: &T = core::mem::uninitialized(); // warning
-}
-
-fn some_ref() {
-    let some_ref = &1;
-}
-
-unsafe fn std_zeroed_no_ref() {
-    let mem_zero: usize = std::mem::zeroed(); // no warning
-}
-
-unsafe fn core_zeroed_no_ref() {
-    let mem_zero: usize = core::mem::zeroed(); // no warning
-}
-
-unsafe fn intr_init_no_ref() {
-    let mem_zero: usize = std::intrinsics::init(); // no warning
-}
diff --git a/tests/ui/invalid_ref.stderr b/tests/ui/invalid_ref.stderr
deleted file mode 100644 (file)
index aeef389..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-error: reference to zeroed memory
-  --> $DIR/invalid_ref.rs:23:24
-   |
-LL |     let ref_zero: &T = std::mem::zeroed(); // warning
-   |                        ^^^^^^^^^^^^^^^^^^
-   |
-   = note: `#[deny(clippy::invalid_ref)]` on by default
-   = help: Creation of a null reference is undefined behavior; see https://doc.rust-lang.org/reference/behavior-considered-undefined.html
-
-error: reference to zeroed memory
-  --> $DIR/invalid_ref.rs:27:24
-   |
-LL |     let ref_zero: &T = core::mem::zeroed(); // warning
-   |                        ^^^^^^^^^^^^^^^^^^^
-   |
-   = help: Creation of a null reference is undefined behavior; see https://doc.rust-lang.org/reference/behavior-considered-undefined.html
-
-error: reference to zeroed memory
-  --> $DIR/invalid_ref.rs:31:24
-   |
-LL |     let ref_zero: &T = std::intrinsics::init(); // warning
-   |                        ^^^^^^^^^^^^^^^^^^^^^^^
-   |
-   = help: Creation of a null reference is undefined behavior; see https://doc.rust-lang.org/reference/behavior-considered-undefined.html
-
-error: reference to uninitialized memory
-  --> $DIR/invalid_ref.rs:35:26
-   |
-LL |     let ref_uninit: &T = std::mem::uninitialized(); // warning
-   |                          ^^^^^^^^^^^^^^^^^^^^^^^^^
-   |
-   = help: Creation of a null reference is undefined behavior; see https://doc.rust-lang.org/reference/behavior-considered-undefined.html
-
-error: reference to uninitialized memory
-  --> $DIR/invalid_ref.rs:39:26
-   |
-LL |     let ref_uninit: &T = core::mem::uninitialized(); // warning
-   |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |
-   = help: Creation of a null reference is undefined behavior; see https://doc.rust-lang.org/reference/behavior-considered-undefined.html
-
-error: aborting due to 5 previous errors
-