pub fn run(update_mode: UpdateMode) {
let lint_list: Vec<Lint> = gather_all().collect();
- let internal_lints = Lint::internal_lints(lint_list.clone().into_iter());
-
- let usable_lints: Vec<Lint> = Lint::usable_lints(lint_list.clone().into_iter()).collect();
- let usable_lint_count = round_to_fifty(usable_lints.len());
-
+ let internal_lints = Lint::internal_lints(&lint_list);
+ let deprecated_lints = Lint::deprecated_lints(&lint_list);
+ let usable_lints = Lint::usable_lints(&lint_list);
let mut sorted_usable_lints = usable_lints.clone();
sorted_usable_lints.sort_by_key(|lint| lint.name.clone());
- let mut file_change = replace_region_in_file(
- Path::new("src/lintlist/mod.rs"),
- "begin lint list",
- "end lint list",
- false,
- update_mode == UpdateMode::Change,
- || {
- format!("pub static ref ALL_LINTS: Vec<Lint> = vec!{:#?};", sorted_usable_lints)
- .lines()
- .map(ToString::to_string)
- .collect::<Vec<_>>()
- },
- )
- .changed;
+ let usable_lint_count = round_to_fifty(usable_lints.len());
+
+ let mut file_change = false;
file_change |= replace_region_in_file(
Path::new("README.md"),
"<!-- end autogenerated links to lint list -->",
false,
update_mode == UpdateMode::Change,
- || gen_changelog_lint_list(lint_list.clone()),
+ || gen_changelog_lint_list(usable_lints.iter().chain(deprecated_lints.iter())),
)
.changed;
"end deprecated lints",
false,
update_mode == UpdateMode::Change,
- || gen_deprecated(&lint_list),
+ || gen_deprecated(deprecated_lints.iter()),
)
.changed;
"end register lints",
false,
update_mode == UpdateMode::Change,
- || gen_register_lint_list(&lint_list),
+ || gen_register_lint_list(internal_lints.iter(), usable_lints.iter()),
)
.changed;
"end lints modules",
false,
update_mode == UpdateMode::Change,
- || gen_modules_list(lint_list.clone()),
+ || gen_modules_list(usable_lints.iter()),
)
.changed;
update_mode == UpdateMode::Change,
|| {
// 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();
+ let all_group_lints = usable_lints.iter().filter(|l| {
+ l.group == "correctness" || l.group == "style" || l.group == "complexity" || l.group == "perf"
+ });
gen_lint_group_list(all_group_lints)
},
r#"\]\);"#,
false,
update_mode == UpdateMode::Change,
- || gen_lint_group_list(lints.clone()),
+ || gen_lint_group_list(lints.iter()),
)
.changed;
}
}
pub fn print_lints() {
- let lint_list = gather_all();
- let usable_lints: Vec<Lint> = Lint::usable_lints(lint_list).collect();
+ let lint_list: Vec<Lint> = gather_all().collect();
+ let usable_lints = Lint::usable_lints(&lint_list);
let usable_lint_count = usable_lints.len();
let grouped_by_lint_group = Lint::by_lint_group(usable_lints.into_iter());