Downgrade implicit_hasher to pedantic
This commit is contained in:
@@ -1135,6 +1135,7 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf:
|
|||||||
LintId::of(&types::CAST_POSSIBLE_WRAP),
|
LintId::of(&types::CAST_POSSIBLE_WRAP),
|
||||||
LintId::of(&types::CAST_PRECISION_LOSS),
|
LintId::of(&types::CAST_PRECISION_LOSS),
|
||||||
LintId::of(&types::CAST_SIGN_LOSS),
|
LintId::of(&types::CAST_SIGN_LOSS),
|
||||||
|
LintId::of(&types::IMPLICIT_HASHER),
|
||||||
LintId::of(&types::INVALID_UPCAST_COMPARISONS),
|
LintId::of(&types::INVALID_UPCAST_COMPARISONS),
|
||||||
LintId::of(&types::LET_UNIT_VALUE),
|
LintId::of(&types::LET_UNIT_VALUE),
|
||||||
LintId::of(&types::LINKEDLIST),
|
LintId::of(&types::LINKEDLIST),
|
||||||
@@ -1384,7 +1385,6 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf:
|
|||||||
LintId::of(&types::CHAR_LIT_AS_U8),
|
LintId::of(&types::CHAR_LIT_AS_U8),
|
||||||
LintId::of(&types::FN_TO_NUMERIC_CAST),
|
LintId::of(&types::FN_TO_NUMERIC_CAST),
|
||||||
LintId::of(&types::FN_TO_NUMERIC_CAST_WITH_TRUNCATION),
|
LintId::of(&types::FN_TO_NUMERIC_CAST_WITH_TRUNCATION),
|
||||||
LintId::of(&types::IMPLICIT_HASHER),
|
|
||||||
LintId::of(&types::REDUNDANT_ALLOCATION),
|
LintId::of(&types::REDUNDANT_ALLOCATION),
|
||||||
LintId::of(&types::TYPE_COMPLEXITY),
|
LintId::of(&types::TYPE_COMPLEXITY),
|
||||||
LintId::of(&types::UNIT_ARG),
|
LintId::of(&types::UNIT_ARG),
|
||||||
@@ -1495,7 +1495,6 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf:
|
|||||||
LintId::of(&try_err::TRY_ERR),
|
LintId::of(&try_err::TRY_ERR),
|
||||||
LintId::of(&types::FN_TO_NUMERIC_CAST),
|
LintId::of(&types::FN_TO_NUMERIC_CAST),
|
||||||
LintId::of(&types::FN_TO_NUMERIC_CAST_WITH_TRUNCATION),
|
LintId::of(&types::FN_TO_NUMERIC_CAST_WITH_TRUNCATION),
|
||||||
LintId::of(&types::IMPLICIT_HASHER),
|
|
||||||
LintId::of(&unsafe_removed_from_name::UNSAFE_REMOVED_FROM_NAME),
|
LintId::of(&unsafe_removed_from_name::UNSAFE_REMOVED_FROM_NAME),
|
||||||
LintId::of(&write::PRINTLN_EMPTY_STRING),
|
LintId::of(&write::PRINTLN_EMPTY_STRING),
|
||||||
LintId::of(&write::PRINT_LITERAL),
|
LintId::of(&write::PRINT_LITERAL),
|
||||||
|
|||||||
@@ -2170,7 +2170,7 @@ declare_clippy_lint! {
|
|||||||
/// pub fn foo<S: BuildHasher>(map: &mut HashMap<i32, i32, S>) { }
|
/// pub fn foo<S: BuildHasher>(map: &mut HashMap<i32, i32, S>) { }
|
||||||
/// ```
|
/// ```
|
||||||
pub IMPLICIT_HASHER,
|
pub IMPLICIT_HASHER,
|
||||||
style,
|
pedantic,
|
||||||
"missing generalization over different hashers"
|
"missing generalization over different hashers"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -747,7 +747,7 @@ pub static ref ALL_LINTS: Vec<Lint> = vec![
|
|||||||
},
|
},
|
||||||
Lint {
|
Lint {
|
||||||
name: "implicit_hasher",
|
name: "implicit_hasher",
|
||||||
group: "style",
|
group: "pedantic",
|
||||||
desc: "missing generalization over different hashers",
|
desc: "missing generalization over different hashers",
|
||||||
deprecation: None,
|
deprecation: None,
|
||||||
module: "types",
|
module: "types",
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
#![deny(clippy::implicit_hasher)]
|
||||||
|
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
error: parameter of type `HashSet` should be generalized over different hashers
|
error: parameter of type `HashSet` should be generalized over different hashers
|
||||||
--> $DIR/ice-3717.rs:5:21
|
--> $DIR/ice-3717.rs:7:21
|
||||||
|
|
|
|
||||||
LL | pub fn ice_3717(_: &HashSet<usize>) {
|
LL | pub fn ice_3717(_: &HashSet<usize>) {
|
||||||
| ^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: `-D clippy::implicit-hasher` implied by `-D warnings`
|
note: the lint level is defined here
|
||||||
|
--> $DIR/ice-3717.rs:1:9
|
||||||
|
|
|
||||||
|
LL | #![deny(clippy::implicit_hasher)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
help: consider adding a type parameter
|
help: consider adding a type parameter
|
||||||
|
|
|
|
||||||
LL | pub fn ice_3717<S: ::std::hash::BuildHasher + Default>(_: &HashSet<usize, S>) {
|
LL | pub fn ice_3717<S: ::std::hash::BuildHasher + Default>(_: &HashSet<usize, S>) {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
// aux-build:implicit_hasher_macros.rs
|
// aux-build:implicit_hasher_macros.rs
|
||||||
|
#![deny(clippy::implicit_hasher)]
|
||||||
#![allow(unused)]
|
#![allow(unused)]
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
error: impl for `HashMap` should be generalized over different hashers
|
error: impl for `HashMap` should be generalized over different hashers
|
||||||
--> $DIR/implicit_hasher.rs:15:35
|
--> $DIR/implicit_hasher.rs:16:35
|
||||||
|
|
|
|
||||||
LL | impl<K: Hash + Eq, V> Foo<i8> for HashMap<K, V> {
|
LL | impl<K: Hash + Eq, V> Foo<i8> for HashMap<K, V> {
|
||||||
| ^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: `-D clippy::implicit-hasher` implied by `-D warnings`
|
note: the lint level is defined here
|
||||||
|
--> $DIR/implicit_hasher.rs:2:9
|
||||||
|
|
|
||||||
|
LL | #![deny(clippy::implicit_hasher)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
help: consider adding a type parameter
|
help: consider adding a type parameter
|
||||||
|
|
|
|
||||||
LL | impl<K: Hash + Eq, V, S: ::std::hash::BuildHasher + Default> Foo<i8> for HashMap<K, V, S> {
|
LL | impl<K: Hash + Eq, V, S: ::std::hash::BuildHasher + Default> Foo<i8> for HashMap<K, V, S> {
|
||||||
@@ -15,7 +19,7 @@ LL | (HashMap::default(), HashMap::with_capacity_and_hasher(10, Default:
|
|||||||
| ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: impl for `HashMap` should be generalized over different hashers
|
error: impl for `HashMap` should be generalized over different hashers
|
||||||
--> $DIR/implicit_hasher.rs:24:36
|
--> $DIR/implicit_hasher.rs:25:36
|
||||||
|
|
|
|
||||||
LL | impl<K: Hash + Eq, V> Foo<i8> for (HashMap<K, V>,) {
|
LL | impl<K: Hash + Eq, V> Foo<i8> for (HashMap<K, V>,) {
|
||||||
| ^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^
|
||||||
@@ -30,7 +34,7 @@ LL | ((HashMap::default(),), (HashMap::with_capacity_and_hasher(10, Defa
|
|||||||
| ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: impl for `HashMap` should be generalized over different hashers
|
error: impl for `HashMap` should be generalized over different hashers
|
||||||
--> $DIR/implicit_hasher.rs:29:19
|
--> $DIR/implicit_hasher.rs:30:19
|
||||||
|
|
|
|
||||||
LL | impl Foo<i16> for HashMap<String, String> {
|
LL | impl Foo<i16> for HashMap<String, String> {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
@@ -45,7 +49,7 @@ LL | (HashMap::default(), HashMap::with_capacity_and_hasher(10, Default:
|
|||||||
| ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: impl for `HashSet` should be generalized over different hashers
|
error: impl for `HashSet` should be generalized over different hashers
|
||||||
--> $DIR/implicit_hasher.rs:46:32
|
--> $DIR/implicit_hasher.rs:47:32
|
||||||
|
|
|
|
||||||
LL | impl<T: Hash + Eq> Foo<i8> for HashSet<T> {
|
LL | impl<T: Hash + Eq> Foo<i8> for HashSet<T> {
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
@@ -60,7 +64,7 @@ LL | (HashSet::default(), HashSet::with_capacity_and_hasher(10, Default:
|
|||||||
| ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: impl for `HashSet` should be generalized over different hashers
|
error: impl for `HashSet` should be generalized over different hashers
|
||||||
--> $DIR/implicit_hasher.rs:51:19
|
--> $DIR/implicit_hasher.rs:52:19
|
||||||
|
|
|
|
||||||
LL | impl Foo<i16> for HashSet<String> {
|
LL | impl Foo<i16> for HashSet<String> {
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
@@ -75,7 +79,7 @@ LL | (HashSet::default(), HashSet::with_capacity_and_hasher(10, Default:
|
|||||||
| ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: parameter of type `HashMap` should be generalized over different hashers
|
error: parameter of type `HashMap` should be generalized over different hashers
|
||||||
--> $DIR/implicit_hasher.rs:68:23
|
--> $DIR/implicit_hasher.rs:69:23
|
||||||
|
|
|
|
||||||
LL | pub fn foo(_map: &mut HashMap<i32, i32>, _set: &mut HashSet<i32>) {}
|
LL | pub fn foo(_map: &mut HashMap<i32, i32>, _set: &mut HashSet<i32>) {}
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
@@ -86,7 +90,7 @@ LL | pub fn foo<S: ::std::hash::BuildHasher>(_map: &mut HashMap<i32, i32, S>, _s
|
|||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: parameter of type `HashSet` should be generalized over different hashers
|
error: parameter of type `HashSet` should be generalized over different hashers
|
||||||
--> $DIR/implicit_hasher.rs:68:53
|
--> $DIR/implicit_hasher.rs:69:53
|
||||||
|
|
|
|
||||||
LL | pub fn foo(_map: &mut HashMap<i32, i32>, _set: &mut HashSet<i32>) {}
|
LL | pub fn foo(_map: &mut HashMap<i32, i32>, _set: &mut HashSet<i32>) {}
|
||||||
| ^^^^^^^^^^^^
|
| ^^^^^^^^^^^^
|
||||||
@@ -97,7 +101,7 @@ LL | pub fn foo<S: ::std::hash::BuildHasher>(_map: &mut HashMap<i32, i32>, _set:
|
|||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: impl for `HashMap` should be generalized over different hashers
|
error: impl for `HashMap` should be generalized over different hashers
|
||||||
--> $DIR/implicit_hasher.rs:72:43
|
--> $DIR/implicit_hasher.rs:73:43
|
||||||
|
|
|
|
||||||
LL | impl<K: Hash + Eq, V> Foo<u8> for HashMap<K, V> {
|
LL | impl<K: Hash + Eq, V> Foo<u8> for HashMap<K, V> {
|
||||||
| ^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^
|
||||||
@@ -116,7 +120,7 @@ LL | (HashMap::default(), HashMap::with_capacity_and_hasher(10,
|
|||||||
| ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: parameter of type `HashMap` should be generalized over different hashers
|
error: parameter of type `HashMap` should be generalized over different hashers
|
||||||
--> $DIR/implicit_hasher.rs:80:33
|
--> $DIR/implicit_hasher.rs:81:33
|
||||||
|
|
|
|
||||||
LL | pub fn $name(_map: &mut HashMap<i32, i32>, _set: &mut HashSet<i32>) {}
|
LL | pub fn $name(_map: &mut HashMap<i32, i32>, _set: &mut HashSet<i32>) {}
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
@@ -131,7 +135,7 @@ LL | pub fn $name<S: ::std::hash::BuildHasher>(_map: &mut HashMap<i32, i
|
|||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: parameter of type `HashSet` should be generalized over different hashers
|
error: parameter of type `HashSet` should be generalized over different hashers
|
||||||
--> $DIR/implicit_hasher.rs:80:63
|
--> $DIR/implicit_hasher.rs:81:63
|
||||||
|
|
|
|
||||||
LL | pub fn $name(_map: &mut HashMap<i32, i32>, _set: &mut HashSet<i32>) {}
|
LL | pub fn $name(_map: &mut HashMap<i32, i32>, _set: &mut HashSet<i32>) {}
|
||||||
| ^^^^^^^^^^^^
|
| ^^^^^^^^^^^^
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
#![allow(clippy::implicit_hasher)]
|
|
||||||
|
|
||||||
use std::collections::{HashMap, HashSet};
|
use std::collections::{HashMap, HashSet};
|
||||||
use std::hash::{Hash, Hasher};
|
use std::hash::{Hash, Hasher};
|
||||||
use std::sync::atomic::{AtomicUsize, Ordering::Relaxed};
|
use std::sync::atomic::{AtomicUsize, Ordering::Relaxed};
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
error: mutable key type
|
error: mutable key type
|
||||||
--> $DIR/mut_key.rs:29:32
|
--> $DIR/mut_key.rs:27:32
|
||||||
|
|
|
|
||||||
LL | fn should_not_take_this_arg(m: &mut HashMap<Key, usize>, _n: usize) -> HashSet<Key> {
|
LL | fn should_not_take_this_arg(m: &mut HashMap<Key, usize>, _n: usize) -> HashSet<Key> {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
@@ -7,19 +7,19 @@ LL | fn should_not_take_this_arg(m: &mut HashMap<Key, usize>, _n: usize) -> Hash
|
|||||||
= note: `#[deny(clippy::mutable_key_type)]` on by default
|
= note: `#[deny(clippy::mutable_key_type)]` on by default
|
||||||
|
|
||||||
error: mutable key type
|
error: mutable key type
|
||||||
--> $DIR/mut_key.rs:29:72
|
--> $DIR/mut_key.rs:27:72
|
||||||
|
|
|
|
||||||
LL | fn should_not_take_this_arg(m: &mut HashMap<Key, usize>, _n: usize) -> HashSet<Key> {
|
LL | fn should_not_take_this_arg(m: &mut HashMap<Key, usize>, _n: usize) -> HashSet<Key> {
|
||||||
| ^^^^^^^^^^^^
|
| ^^^^^^^^^^^^
|
||||||
|
|
||||||
error: mutable key type
|
error: mutable key type
|
||||||
--> $DIR/mut_key.rs:30:5
|
--> $DIR/mut_key.rs:28:5
|
||||||
|
|
|
|
||||||
LL | let _other: HashMap<Key, bool> = HashMap::new();
|
LL | let _other: HashMap<Key, bool> = HashMap::new();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: mutable key type
|
error: mutable key type
|
||||||
--> $DIR/mut_key.rs:49:22
|
--> $DIR/mut_key.rs:47:22
|
||||||
|
|
|
|
||||||
LL | fn tuples_bad<U>(_m: &mut HashMap<(Key, U), bool>) {}
|
LL | fn tuples_bad<U>(_m: &mut HashMap<(Key, U), bool>) {}
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|||||||
Reference in New Issue
Block a user