mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-09-22 23:52:00 +00:00
RIIR update lints: Generate lint group registrations
This commit is contained in:
parent
6e3320c7ef
commit
4f38538d75
2 changed files with 58 additions and 0 deletions
|
@ -72,6 +72,19 @@ impl Lint {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Generates the Vec items for `register_lint_group` calls in `clippy_lints/src/lib.rs`.
|
||||||
|
pub fn gen_lint_group_list(lints: Vec<Lint>) -> Vec<String> {
|
||||||
|
lints.into_iter()
|
||||||
|
.filter_map(|l| {
|
||||||
|
if l.is_internal() || l.deprecation.is_some() {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
Some(format!(" {}::{},", l.module, l.name.to_uppercase()))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.sorted()
|
||||||
|
}
|
||||||
|
|
||||||
/// Generates the `pub mod module_name` list in `clippy_lints/src/lib.rs`.
|
/// Generates the `pub mod module_name` list in `clippy_lints/src/lib.rs`.
|
||||||
pub fn gen_modules_list(lints: Vec<Lint>) -> Vec<String> {
|
pub fn gen_modules_list(lints: Vec<Lint>) -> Vec<String> {
|
||||||
lints.into_iter()
|
lints.into_iter()
|
||||||
|
@ -390,3 +403,18 @@ fn test_gen_modules_list() {
|
||||||
];
|
];
|
||||||
assert_eq!(expected, gen_modules_list(lints));
|
assert_eq!(expected, gen_modules_list(lints));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_gen_lint_group_list() {
|
||||||
|
let lints = vec![
|
||||||
|
Lint::new("abc", "group1", "abc", None, "module_name"),
|
||||||
|
Lint::new("should_assert_eq", "group1", "abc", None, "module_name"),
|
||||||
|
Lint::new("should_assert_eq2", "group2", "abc", Some("abc"), "deprecated"),
|
||||||
|
Lint::new("incorrect_internal", "internal_style", "abc", None, "module_name"),
|
||||||
|
];
|
||||||
|
let expected = vec![
|
||||||
|
" module_name::ABC,".to_string(),
|
||||||
|
" module_name::SHOULD_ASSERT_EQ,".to_string(),
|
||||||
|
];
|
||||||
|
assert_eq!(expected, gen_lint_group_list(lints));
|
||||||
|
}
|
||||||
|
|
|
@ -98,4 +98,34 @@ fn update_lints() {
|
||||||
false,
|
false,
|
||||||
|| { gen_modules_list(lint_list.clone()) }
|
|| { gen_modules_list(lint_list.clone()) }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Generate lists of lints in the clippy::all lint group
|
||||||
|
replace_region_in_file(
|
||||||
|
"../clippy_lints/src/lib.rs",
|
||||||
|
r#"reg.register_lint_group\("clippy::all""#,
|
||||||
|
r#"\]\);"#,
|
||||||
|
false,
|
||||||
|
|| {
|
||||||
|
// clippy::all should only include the following lint groups:
|
||||||
|
let all_group_lints = usable_lints.clone().into_iter().filter(|l| {
|
||||||
|
l.group == "correctness" ||
|
||||||
|
l.group == "style" ||
|
||||||
|
l.group == "complexity" ||
|
||||||
|
l.group == "perf"
|
||||||
|
}).collect();
|
||||||
|
|
||||||
|
gen_lint_group_list(all_group_lints)
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// Generate the list of lints for all other lint groups
|
||||||
|
for (lint_group, lints) in Lint::by_lint_group(&usable_lints) {
|
||||||
|
replace_region_in_file(
|
||||||
|
"../clippy_lints/src/lib.rs",
|
||||||
|
&format!("reg.register_lint_group\\(\"clippy::{}\"", lint_group),
|
||||||
|
r#"\]\);"#,
|
||||||
|
false,
|
||||||
|
|| { gen_lint_group_list(lints.clone()) }
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue