about summary refs log tree commit diff
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2018-10-02 12:41:40 +0200
committerManish Goregaokar <manishsmail@gmail.com>2018-10-02 12:49:27 +0200
commitfffcd093b29a3fa4be22d3836f214cd810836c21 (patch)
tree0283408e0951be913271765f6de48a02e82d0d35
parent902aca70bda2716d08f4e08ae12084803f8bee78 (diff)
downloadrust-fffcd093b29a3fa4be22d3836f214cd810836c21.tar.gz
rust-fffcd093b29a3fa4be22d3836f214cd810836c21.zip
relicensing: Remove fn_to_numeric_cast, fn_to_numeric_cast_with_truncation
This removes the code added in https://github.com/rust-lang-nursery/rust-clippy/pull/2814
-rw-r--r--clippy_lints/src/lib.rs4
-rw-r--r--clippy_lints/src/types.rs67
-rw-r--r--tests/ui/types_fn_to_int.rs22
-rw-r--r--tests/ui/types_fn_to_int.stderr66
4 files changed, 0 insertions, 159 deletions
diff --git a/clippy_lints/src/lib.rs b/clippy_lints/src/lib.rs
index 9af4850b15c..19564dbf9be 100644
--- a/clippy_lints/src/lib.rs
+++ b/clippy_lints/src/lib.rs
@@ -697,8 +697,6 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
         types::CAST_LOSSLESS,
         types::CAST_PTR_ALIGNMENT,
         types::CHAR_LIT_AS_U8,
-        types::FN_TO_NUMERIC_CAST,
-        types::FN_TO_NUMERIC_CAST_WITH_TRUNCATION,
         types::IMPLICIT_HASHER,
         types::LET_UNIT_VALUE,
         types::OPTION_OPTION,
@@ -791,7 +789,6 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
         returns::LET_AND_RETURN,
         returns::NEEDLESS_RETURN,
         strings::STRING_LIT_AS_BYTES,
-        types::FN_TO_NUMERIC_CAST,
         types::IMPLICIT_HASHER,
         types::LET_UNIT_VALUE,
         unsafe_removed_from_name::UNSAFE_REMOVED_FROM_NAME,
@@ -921,7 +918,6 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
         transmute::WRONG_TRANSMUTE,
         types::ABSURD_EXTREME_COMPARISONS,
         types::CAST_PTR_ALIGNMENT,
-        types::FN_TO_NUMERIC_CAST_WITH_TRUNCATION,
         types::UNIT_CMP,
         unicode::ZERO_WIDTH_SPACE,
         unused_io_amount::UNUSED_IO_AMOUNT,
diff --git a/clippy_lints/src/types.rs b/clippy_lints/src/types.rs
index 857238e9002..b98a0f88242 100644
--- a/clippy_lints/src/types.rs
+++ b/clippy_lints/src/types.rs
@@ -700,40 +700,6 @@ declare_clippy_lint! {
     "cast to the same type, e.g. `x as i32` where `x: i32`"
 }
 
-/// **What it does:** Checks for casts of a function pointer to a numeric type not enough to store address.
-///
-/// **Why is this bad?** Casting a function pointer to not eligible type could truncate the address value.
-///
-/// **Known problems:** None.
-///
-/// **Example:**
-/// ```rust
-/// fn test_fn() -> i16;
-/// let _ = test_fn as i32
-/// ```
-declare_clippy_lint! {
-    pub FN_TO_NUMERIC_CAST_WITH_TRUNCATION,
-    correctness,
-    "cast function pointer to the numeric type with value truncation"
-}
-
-/// **What it does:** Checks for casts of a function pointer to a numeric type except `usize`.
-///
-/// **Why is this bad?** Casting a function pointer to something other than `usize` is not a good style.
-///
-/// **Known problems:** None.
-///
-/// **Example:**
-/// ```rust
-/// fn test_fn() -> i16;
-/// let _ = test_fn as i128
-/// ```
-declare_clippy_lint! {
-    pub FN_TO_NUMERIC_CAST,
-    style,
-    "cast function pointer to the numeric type"
-}
-
 /// **What it does:** Checks for casts from a less-strictly-aligned pointer to a
 /// more-strictly-aligned pointer
 ///
@@ -947,8 +913,6 @@ impl LintPass for CastPass {
             CAST_LOSSLESS,
             UNNECESSARY_CAST,
             CAST_PTR_ALIGNMENT,
-            FN_TO_NUMERIC_CAST,
-            FN_TO_NUMERIC_CAST_WITH_TRUNCATION,
         )
     }
 }
@@ -1033,37 +997,6 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for CastPass {
                 }
             }
 
-            match &cast_from.sty {
-                ty::FnDef(..) |
-                ty::FnPtr(..) => {
-                    if cast_to.is_numeric() && cast_to.sty != ty::Uint(UintTy::Usize){
-                        let to_nbits = int_ty_to_nbits(cast_to, cx.tcx);
-                        let pointer_nbits = cx.tcx.data_layout.pointer_size.bits();
-                        if to_nbits < pointer_nbits || (to_nbits == pointer_nbits && cast_to.is_signed()) {
-                            span_lint_and_sugg(
-                                cx,
-                                FN_TO_NUMERIC_CAST_WITH_TRUNCATION,
-                                expr.span,
-                                &format!("casting a `{}` to `{}` may truncate the function address value.", cast_from, cast_to),
-                                "if you need the address of the function, consider",
-                                format!("{} as usize", &snippet(cx, ex.span, "x"))
-                            );
-                        } else {
-                            span_lint_and_sugg(
-                                cx,
-                                FN_TO_NUMERIC_CAST,
-                                expr.span,
-                                &format!("casting a `{}` to `{}` is bad style.", cast_from, cast_to),
-                                "if you need the address of the function, consider",
-                                format!("{} as usize", &snippet(cx, ex.span, "x"))
-                            );
-
-                        };
-                    }
-                }
-                _ => ()
-            }
-
             if_chain!{
                 if let ty::RawPtr(from_ptr_ty) = &cast_from.sty;
                 if let ty::RawPtr(to_ptr_ty) = &cast_to.sty;
diff --git a/tests/ui/types_fn_to_int.rs b/tests/ui/types_fn_to_int.rs
deleted file mode 100644
index 8387586c3e9..00000000000
--- a/tests/ui/types_fn_to_int.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-enum Foo {
-    A(usize),
-    B
-}
-
-fn bar() -> i32 {
-    0i32
-}
-
-fn main() {
-    let x = Foo::A;
-    let _y = x as i32;
-    let _y1 = Foo::A as i32;
-    let _y = x as u32;
-    let _z = bar as u32;
-    let _y = bar as i64;
-    let _y = bar as u64;
-    let _z = Foo::A as i128;
-    let _z = Foo::A as u128;
-    let _z = bar as i128;
-    let _z = bar as u128;
-}
diff --git a/tests/ui/types_fn_to_int.stderr b/tests/ui/types_fn_to_int.stderr
deleted file mode 100644
index a06809b9bfd..00000000000
--- a/tests/ui/types_fn_to_int.stderr
+++ /dev/null
@@ -1,66 +0,0 @@
-error: casting a `fn(usize) -> Foo {Foo::A}` to `i32` may truncate the function address value.
-  --> $DIR/types_fn_to_int.rs:12:14
-   |
-12 |     let _y = x as i32;
-   |              ^^^^^^^^ help: if you need the address of the function, consider: `x as usize`
-   |
-   = note: #[deny(clippy::fn_to_numeric_cast_with_truncation)] on by default
-
-error: casting a `fn(usize) -> Foo {Foo::A}` to `i32` may truncate the function address value.
-  --> $DIR/types_fn_to_int.rs:13:15
-   |
-13 |     let _y1 = Foo::A as i32;
-   |               ^^^^^^^^^^^^^ help: if you need the address of the function, consider: `Foo::A as usize`
-
-error: casting a `fn(usize) -> Foo {Foo::A}` to `u32` may truncate the function address value.
-  --> $DIR/types_fn_to_int.rs:14:14
-   |
-14 |     let _y = x as u32;
-   |              ^^^^^^^^ help: if you need the address of the function, consider: `x as usize`
-
-error: casting a `fn() -> i32 {bar}` to `u32` may truncate the function address value.
-  --> $DIR/types_fn_to_int.rs:15:14
-   |
-15 |     let _z = bar as u32;
-   |              ^^^^^^^^^^ help: if you need the address of the function, consider: `bar as usize`
-
-error: casting a `fn() -> i32 {bar}` to `i64` may truncate the function address value.
-  --> $DIR/types_fn_to_int.rs:16:14
-   |
-16 |     let _y = bar as i64;
-   |              ^^^^^^^^^^ help: if you need the address of the function, consider: `bar as usize`
-
-error: casting a `fn() -> i32 {bar}` to `u64` is bad style.
-  --> $DIR/types_fn_to_int.rs:17:14
-   |
-17 |     let _y = bar as u64;
-   |              ^^^^^^^^^^ help: if you need the address of the function, consider: `bar as usize`
-   |
-   = note: `-D clippy::fn-to-numeric-cast` implied by `-D warnings`
-
-error: casting a `fn(usize) -> Foo {Foo::A}` to `i128` is bad style.
-  --> $DIR/types_fn_to_int.rs:18:14
-   |
-18 |     let _z = Foo::A as i128;
-   |              ^^^^^^^^^^^^^^ help: if you need the address of the function, consider: `Foo::A as usize`
-
-error: casting a `fn(usize) -> Foo {Foo::A}` to `u128` is bad style.
-  --> $DIR/types_fn_to_int.rs:19:14
-   |
-19 |     let _z = Foo::A as u128;
-   |              ^^^^^^^^^^^^^^ help: if you need the address of the function, consider: `Foo::A as usize`
-
-error: casting a `fn() -> i32 {bar}` to `i128` is bad style.
-  --> $DIR/types_fn_to_int.rs:20:14
-   |
-20 |     let _z = bar as i128;
-   |              ^^^^^^^^^^^ help: if you need the address of the function, consider: `bar as usize`
-
-error: casting a `fn() -> i32 {bar}` to `u128` is bad style.
-  --> $DIR/types_fn_to_int.rs:21:14
-   |
-21 |     let _z = bar as u128;
-   |              ^^^^^^^^^^^ help: if you need the address of the function, consider: `bar as usize`
-
-error: aborting due to 10 previous errors
-