Auto merge of #4363 - phansch:fix_lint_deprecation, r=flip1995

Update lint deprecation for tool lints

changelog: Allow tool lints (`clippy::*`) to be deprecated

Our lint deprecation previously didn't work for tool lints, because
`register_removed` was registering lints to be removed _without_ the
`clippy` prefix.

Fixes #4349
This commit is contained in:
bors 2019-08-14 11:37:10 +00:00
commit 06430e7af4
8 changed files with 156 additions and 39 deletions

View file

@ -983,6 +983,7 @@ Released 2018-09-13
[`integer_division`]: https://rust-lang.github.io/rust-clippy/master/index.html#integer_division [`integer_division`]: https://rust-lang.github.io/rust-clippy/master/index.html#integer_division
[`into_iter_on_array`]: https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [`into_iter_on_array`]: https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array
[`into_iter_on_ref`]: https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [`into_iter_on_ref`]: https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref
[`invalid_ref`]: https://rust-lang.github.io/rust-clippy/master/index.html#invalid_ref
[`invalid_regex`]: https://rust-lang.github.io/rust-clippy/master/index.html#invalid_regex [`invalid_regex`]: https://rust-lang.github.io/rust-clippy/master/index.html#invalid_regex
[`invalid_upcast_comparisons`]: https://rust-lang.github.io/rust-clippy/master/index.html#invalid_upcast_comparisons [`invalid_upcast_comparisons`]: https://rust-lang.github.io/rust-clippy/master/index.html#invalid_upcast_comparisons
[`items_after_statements`]: https://rust-lang.github.io/rust-clippy/master/index.html#items_after_statements [`items_after_statements`]: https://rust-lang.github.io/rust-clippy/master/index.html#items_after_statements

View file

@ -126,7 +126,7 @@ pub fn gen_deprecated(lints: &[Lint]) -> Vec<String> {
l.clone().deprecation.and_then(|depr_text| { l.clone().deprecation.and_then(|depr_text| {
Some(vec![ Some(vec![
" store.register_removed(".to_string(), " store.register_removed(".to_string(),
format!(" \"{}\",", l.name), format!(" \"clippy::{}\",", l.name),
format!(" \"{}\",", depr_text), format!(" \"{}\",", depr_text),
" );".to_string(), " );".to_string(),
]) ])
@ -442,11 +442,11 @@ fn test_gen_deprecated() {
]; ];
let expected: Vec<String> = vec![ let expected: Vec<String> = vec![
" store.register_removed(", " store.register_removed(",
" \"should_assert_eq\",", " \"clippy::should_assert_eq\",",
" \"has been superseded by should_assert_eq2\",", " \"has been superseded by should_assert_eq2\",",
" );", " );",
" store.register_removed(", " store.register_removed(",
" \"another_deprecated\",", " \"clippy::another_deprecated\",",
" \"will be removed\",", " \"will be removed\",",
" );", " );",
] ]

View file

@ -118,7 +118,7 @@ declare_deprecated_lint! {
/// ///
/// **Deprecation reason:** This lint has been superseded by the warn-by-default /// **Deprecation reason:** This lint has been superseded by the warn-by-default
/// `invalid_value` rustc lint. /// `invalid_value` rustc lint.
declare_clippy_lint! { declare_deprecated_lint! {
pub INVALID_REF, pub INVALID_REF,
"superseded by rustc lint `invalid_value`" "superseded by rustc lint `invalid_value`"
} }

View file

@ -384,51 +384,57 @@ pub fn read_conf(reg: &rustc_plugin::Registry<'_>) -> Conf {
#[rustfmt::skip] #[rustfmt::skip]
pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) { pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
let mut store = reg.sess.lint_store.borrow_mut(); let mut store = reg.sess.lint_store.borrow_mut();
register_removed_non_tool_lints(&mut store);
// begin deprecated lints, do not remove this comment, its used in `update_lints` // begin deprecated lints, do not remove this comment, its used in `update_lints`
store.register_removed( store.register_removed(
"should_assert_eq", "clippy::should_assert_eq",
"`assert!()` will be more flexible with RFC 2011", "`assert!()` will be more flexible with RFC 2011",
); );
store.register_removed( store.register_removed(
"extend_from_slice", "clippy::extend_from_slice",
"`.extend_from_slice(_)` is a faster way to extend a Vec by a slice", "`.extend_from_slice(_)` is a faster way to extend a Vec by a slice",
); );
store.register_removed( store.register_removed(
"range_step_by_zero", "clippy::range_step_by_zero",
"`iterator.step_by(0)` panics nowadays", "`iterator.step_by(0)` panics nowadays",
); );
store.register_removed( store.register_removed(
"unstable_as_slice", "clippy::unstable_as_slice",
"`Vec::as_slice` has been stabilized in 1.7", "`Vec::as_slice` has been stabilized in 1.7",
); );
store.register_removed( store.register_removed(
"unstable_as_mut_slice", "clippy::unstable_as_mut_slice",
"`Vec::as_mut_slice` has been stabilized in 1.7", "`Vec::as_mut_slice` has been stabilized in 1.7",
); );
store.register_removed( store.register_removed(
"str_to_string", "clippy::str_to_string",
"using `str::to_string` is common even today and specialization will likely happen soon", "using `str::to_string` is common even today and specialization will likely happen soon",
); );
store.register_removed( store.register_removed(
"string_to_string", "clippy::string_to_string",
"using `string::to_string` is common even today and specialization will likely happen soon", "using `string::to_string` is common even today and specialization will likely happen soon",
); );
store.register_removed( store.register_removed(
"misaligned_transmute", "clippy::misaligned_transmute",
"this lint has been split into cast_ptr_alignment and transmute_ptr_to_ptr", "this lint has been split into cast_ptr_alignment and transmute_ptr_to_ptr",
); );
store.register_removed( store.register_removed(
"assign_ops", "clippy::assign_ops",
"using compound assignment operators (e.g., `+=`) is harmless", "using compound assignment operators (e.g., `+=`) is harmless",
); );
store.register_removed( store.register_removed(
"if_let_redundant_pattern_matching", "clippy::if_let_redundant_pattern_matching",
"this lint has been changed to redundant_pattern_matching", "this lint has been changed to redundant_pattern_matching",
); );
store.register_removed( store.register_removed(
"unsafe_vector_initialization", "clippy::unsafe_vector_initialization",
"the replacement suggested by this lint had substantially different behavior", "the replacement suggested by this lint had substantially different behavior",
); );
store.register_removed(
"clippy::invalid_ref",
"superseded by rustc lint `invalid_value`",
);
// end deprecated lints, do not remove this comment, its used in `update_lints` // end deprecated lints, do not remove this comment, its used in `update_lints`
reg.register_late_lint_pass(box serde_api::SerdeAPI); reg.register_late_lint_pass(box serde_api::SerdeAPI);
@ -1166,6 +1172,54 @@ pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
]); ]);
} }
#[rustfmt::skip]
fn register_removed_non_tool_lints(store: &mut rustc::lint::LintStore) {
store.register_removed(
"should_assert_eq",
"`assert!()` will be more flexible with RFC 2011",
);
store.register_removed(
"extend_from_slice",
"`.extend_from_slice(_)` is a faster way to extend a Vec by a slice",
);
store.register_removed(
"range_step_by_zero",
"`iterator.step_by(0)` panics nowadays",
);
store.register_removed(
"unstable_as_slice",
"`Vec::as_slice` has been stabilized in 1.7",
);
store.register_removed(
"unstable_as_mut_slice",
"`Vec::as_mut_slice` has been stabilized in 1.7",
);
store.register_removed(
"str_to_string",
"using `str::to_string` is common even today and specialization will likely happen soon",
);
store.register_removed(
"string_to_string",
"using `string::to_string` is common even today and specialization will likely happen soon",
);
store.register_removed(
"misaligned_transmute",
"this lint has been split into cast_ptr_alignment and transmute_ptr_to_ptr",
);
store.register_removed(
"assign_ops",
"using compound assignment operators (e.g., `+=`) is harmless",
);
store.register_removed(
"if_let_redundant_pattern_matching",
"this lint has been changed to redundant_pattern_matching",
);
store.register_removed(
"unsafe_vector_initialization",
"the replacement suggested by this lint had substantially different behavior",
);
}
/// Register renamed lints. /// Register renamed lints.
/// ///
/// Used in `./src/driver.rs`. /// Used in `./src/driver.rs`.

View file

@ -1,7 +1,9 @@
#[warn(str_to_string)] #[warn(clippy::str_to_string)]
#[warn(string_to_string)] #[warn(clippy::string_to_string)]
#[warn(unstable_as_slice)] #[warn(clippy::unstable_as_slice)]
#[warn(unstable_as_mut_slice)] #[warn(clippy::unstable_as_mut_slice)]
#[warn(misaligned_transmute)] #[warn(clippy::misaligned_transmute)]
#[warn(clippy::unused_collect)]
#[warn(clippy::invalid_ref)]
fn main() {} fn main() {}

View file

@ -1,40 +1,46 @@
error: lint `str_to_string` has been removed: `using `str::to_string` is common even today and specialization will likely happen soon` error: lint `clippy::str_to_string` has been removed: `using `str::to_string` is common even today and specialization will likely happen soon`
--> $DIR/deprecated.rs:1:8 --> $DIR/deprecated.rs:1:8
| |
LL | #[warn(str_to_string)] LL | #[warn(clippy::str_to_string)]
| ^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^
| |
= note: `-D renamed-and-removed-lints` implied by `-D warnings` = note: `-D renamed-and-removed-lints` implied by `-D warnings`
error: lint `string_to_string` has been removed: `using `string::to_string` is common even today and specialization will likely happen soon` error: lint `clippy::string_to_string` has been removed: `using `string::to_string` is common even today and specialization will likely happen soon`
--> $DIR/deprecated.rs:2:8 --> $DIR/deprecated.rs:2:8
| |
LL | #[warn(string_to_string)] LL | #[warn(clippy::string_to_string)]
| ^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^
error: lint `unstable_as_slice` has been removed: ``Vec::as_slice` has been stabilized in 1.7` error: lint `clippy::unstable_as_slice` has been removed: ``Vec::as_slice` has been stabilized in 1.7`
--> $DIR/deprecated.rs:3:8 --> $DIR/deprecated.rs:3:8
| |
LL | #[warn(unstable_as_slice)] LL | #[warn(clippy::unstable_as_slice)]
| ^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^
error: lint `unstable_as_mut_slice` has been removed: ``Vec::as_mut_slice` has been stabilized in 1.7` error: lint `clippy::unstable_as_mut_slice` has been removed: ``Vec::as_mut_slice` has been stabilized in 1.7`
--> $DIR/deprecated.rs:4:8 --> $DIR/deprecated.rs:4:8
| |
LL | #[warn(unstable_as_mut_slice)] LL | #[warn(clippy::unstable_as_mut_slice)]
| ^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: lint `misaligned_transmute` has been removed: `this lint has been split into cast_ptr_alignment and transmute_ptr_to_ptr` error: lint `clippy::misaligned_transmute` has been removed: `this lint has been split into cast_ptr_alignment and transmute_ptr_to_ptr`
--> $DIR/deprecated.rs:5:8 --> $DIR/deprecated.rs:5:8
| |
LL | #[warn(misaligned_transmute)] LL | #[warn(clippy::misaligned_transmute)]
| ^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: lint `str_to_string` has been removed: `using `str::to_string` is common even today and specialization will likely happen soon` error: lint `clippy::invalid_ref` has been removed: `superseded by rustc lint `invalid_value``
--> $DIR/deprecated.rs:7:8
|
LL | #[warn(clippy::invalid_ref)]
| ^^^^^^^^^^^^^^^^^^^
error: lint `clippy::str_to_string` has been removed: `using `str::to_string` is common even today and specialization will likely happen soon`
--> $DIR/deprecated.rs:1:8 --> $DIR/deprecated.rs:1:8
| |
LL | #[warn(str_to_string)] LL | #[warn(clippy::str_to_string)]
| ^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 6 previous errors error: aborting due to 7 previous errors

View file

@ -0,0 +1,8 @@
#[warn(str_to_string)]
#[warn(string_to_string)]
#[warn(unstable_as_slice)]
#[warn(unstable_as_mut_slice)]
#[warn(misaligned_transmute)]
#[warn(unused_collect)]
fn main() {}

View file

@ -0,0 +1,46 @@
error: lint `str_to_string` has been removed: `using `str::to_string` is common even today and specialization will likely happen soon`
--> $DIR/deprecated_old.rs:1:8
|
LL | #[warn(str_to_string)]
| ^^^^^^^^^^^^^
|
= note: `-D renamed-and-removed-lints` implied by `-D warnings`
error: lint `string_to_string` has been removed: `using `string::to_string` is common even today and specialization will likely happen soon`
--> $DIR/deprecated_old.rs:2:8
|
LL | #[warn(string_to_string)]
| ^^^^^^^^^^^^^^^^
error: lint `unstable_as_slice` has been removed: ``Vec::as_slice` has been stabilized in 1.7`
--> $DIR/deprecated_old.rs:3:8
|
LL | #[warn(unstable_as_slice)]
| ^^^^^^^^^^^^^^^^^
error: lint `unstable_as_mut_slice` has been removed: ``Vec::as_mut_slice` has been stabilized in 1.7`
--> $DIR/deprecated_old.rs:4:8
|
LL | #[warn(unstable_as_mut_slice)]
| ^^^^^^^^^^^^^^^^^^^^^
error: lint `misaligned_transmute` has been removed: `this lint has been split into cast_ptr_alignment and transmute_ptr_to_ptr`
--> $DIR/deprecated_old.rs:5:8
|
LL | #[warn(misaligned_transmute)]
| ^^^^^^^^^^^^^^^^^^^^
error: lint name `unused_collect` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore
--> $DIR/deprecated_old.rs:6:8
|
LL | #[warn(unused_collect)]
| ^^^^^^^^^^^^^^ help: change it to: `clippy::unused_collect`
error: lint `str_to_string` has been removed: `using `str::to_string` is common even today and specialization will likely happen soon`
--> $DIR/deprecated_old.rs:1:8
|
LL | #[warn(str_to_string)]
| ^^^^^^^^^^^^^
error: aborting due to 7 previous errors