RIIR update lints: Generate deprecated lints
The update script now also generates the 'register_removed' section in `clippy_lints/src/lib.rs`. Also, instead of using `let mut store ...`, I added a new identifier line so that the replacement will continue to work in case `let mut store ...` ever changes.
This commit is contained in:
parent
e695015caa
commit
64bd658516
|
@ -72,6 +72,7 @@ impl Lint {
|
|||
}
|
||||
}
|
||||
|
||||
/// Generates the list of lint links at the bottom of the README
|
||||
pub fn gen_changelog_lint_list(lints: Vec<Lint>) -> Vec<String> {
|
||||
let mut lint_list_sorted: Vec<Lint> = lints;
|
||||
lint_list_sorted.sort_by_key(|l| l.name.clone());
|
||||
|
@ -84,6 +85,23 @@ pub fn gen_changelog_lint_list(lints: Vec<Lint>) -> Vec<String> {
|
|||
.collect()
|
||||
}
|
||||
|
||||
/// Generates the 'register_removed' code in `./clippy_lints/src/lib.rs`.
|
||||
pub fn gen_deprecated(lints: Vec<Lint>) -> Vec<String> {
|
||||
lints.iter()
|
||||
.filter(|l| l.deprecation.is_some())
|
||||
.map(|l| {
|
||||
format!(
|
||||
r#" store.register_removed(
|
||||
"{}",
|
||||
"{}",
|
||||
);"#,
|
||||
l.name,
|
||||
l.deprecation.clone().unwrap()
|
||||
)
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
/// Gathers all files in `src/clippy_lints` and gathers all lints inside
|
||||
pub fn gather_all() -> impl Iterator<Item=Lint> {
|
||||
lint_files().flat_map(|f| gather_from_file(&f))
|
||||
|
@ -321,3 +339,18 @@ fn test_gen_changelog_lint_list() {
|
|||
];
|
||||
assert_eq!(expected, gen_changelog_lint_list(lints));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_gen_deprecated() {
|
||||
let lints = vec![
|
||||
Lint::new("should_assert_eq", "group1", "abc", Some("has been superseeded by should_assert_eq2"), "module_name"),
|
||||
Lint::new("should_assert_eq2", "group2", "abc", None, "module_name")
|
||||
];
|
||||
let expected: Vec<String> = vec![
|
||||
r#" store.register_removed(
|
||||
"should_assert_eq",
|
||||
"has been superseeded by should_assert_eq2",
|
||||
);"#.to_string()
|
||||
];
|
||||
assert_eq!(expected, gen_deprecated(lints));
|
||||
}
|
||||
|
|
|
@ -82,4 +82,12 @@ fn update_lints() {
|
|||
false,
|
||||
|| { gen_changelog_lint_list(lint_list.clone()) }
|
||||
);
|
||||
|
||||
replace_region_in_file(
|
||||
"../clippy_lints/src/lib.rs",
|
||||
"begin deprecated lints",
|
||||
"end deprecated lints",
|
||||
false,
|
||||
|| { gen_deprecated(lint_list.clone()) }
|
||||
);
|
||||
}
|
||||
|
|
|
@ -270,6 +270,7 @@ pub fn read_conf(reg: &rustc_plugin::Registry<'_>) -> Conf {
|
|||
#[rustfmt::skip]
|
||||
pub fn register_plugins(reg: &mut rustc_plugin::Registry<'_>, conf: &Conf) {
|
||||
let mut store = reg.sess.lint_store.borrow_mut();
|
||||
// begin deprecated lints, do not remove this comment, it’s used in `update_lints`
|
||||
store.register_removed(
|
||||
"should_assert_eq",
|
||||
"`assert!()` will be more flexible with RFC 2011",
|
||||
|
|
|
@ -240,7 +240,7 @@ def main(print_only=False, check=False):
|
|||
|
||||
# same for "deprecated" lint collection
|
||||
changed |= replace_region(
|
||||
'clippy_lints/src/lib.rs', r'let mut store', r'end deprecated lints',
|
||||
'clippy_lints/src/lib.rs', r'begin deprecated lints', r'end deprecated lints',
|
||||
lambda: gen_deprecated(deprecated_lints),
|
||||
replace_start=False,
|
||||
write_back=not check)
|
||||
|
|
Loading…
Reference in a new issue