Merge #3388
3388: RIIR update lints: Generate deprecated lints r=phansch a=phansch 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. cc #2882 Co-authored-by: Philipp Hansch <dev@phansch.net>
This commit is contained in:
commit
0ad5b9b9e0
@ -72,14 +72,34 @@ pub fn is_internal(&self) -> bool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Generates the list of lint links at the bottom of the README
|
||||||
pub fn gen_changelog_lint_list(lints: Vec<Lint>) -> Vec<String> {
|
pub fn gen_changelog_lint_list(lints: Vec<Lint>) -> Vec<String> {
|
||||||
let mut lint_list_sorted: Vec<Lint> = lints;
|
let mut lint_list_sorted: Vec<Lint> = lints;
|
||||||
lint_list_sorted.sort_by_key(|l| l.name.clone());
|
lint_list_sorted.sort_by_key(|l| l.name.clone());
|
||||||
lint_list_sorted
|
lint_list_sorted
|
||||||
.iter()
|
.iter()
|
||||||
.filter(|l| !l.is_internal())
|
.filter_map(|l| {
|
||||||
.map(|l| {
|
if l.is_internal() {
|
||||||
format!("[`{}`]: {}#{}", l.name, DOCS_LINK.clone(), l.name)
|
None
|
||||||
|
} else {
|
||||||
|
Some(format!("[`{}`]: {}#{}", l.name, DOCS_LINK.clone(), l.name))
|
||||||
|
}
|
||||||
|
}).collect()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Generates the `register_removed` code in `./clippy_lints/src/lib.rs`.
|
||||||
|
pub fn gen_deprecated(lints: &[Lint]) -> Vec<String> {
|
||||||
|
lints.iter()
|
||||||
|
.filter_map(|l| {
|
||||||
|
l.clone().deprecation.and_then(|depr_text| {
|
||||||
|
Some(
|
||||||
|
format!(
|
||||||
|
" store.register_removed(\n \"{}\",\n \"{}\",\n );",
|
||||||
|
l.name,
|
||||||
|
depr_text
|
||||||
|
)
|
||||||
|
)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
@ -321,3 +341,18 @@ fn test_gen_changelog_lint_list() {
|
|||||||
];
|
];
|
||||||
assert_eq!(expected, gen_changelog_lint_list(lints));
|
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,
|
false,
|
||||||
|| { gen_changelog_lint_list(lint_list.clone()) }
|
|| { 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) }
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
@ -271,6 +271,7 @@ 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();
|
||||||
|
// begin deprecated lints, do not remove this comment, it’s used in `update_lints`
|
||||||
store.register_removed(
|
store.register_removed(
|
||||||
"should_assert_eq",
|
"should_assert_eq",
|
||||||
"`assert!()` will be more flexible with RFC 2011",
|
"`assert!()` will be more flexible with RFC 2011",
|
||||||
|
@ -240,7 +240,7 @@ def main(print_only=False, check=False):
|
|||||||
|
|
||||||
# same for "deprecated" lint collection
|
# same for "deprecated" lint collection
|
||||||
changed |= replace_region(
|
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),
|
lambda: gen_deprecated(deprecated_lints),
|
||||||
replace_start=False,
|
replace_start=False,
|
||||||
write_back=not check)
|
write_back=not check)
|
||||||
|
Loading…
Reference in New Issue
Block a user