use std::path::{Path, PathBuf};
use walkdir::WalkDir;
+pub mod bless;
pub mod fmt;
pub mod new_lint;
pub mod ra_setup;
+pub mod serve;
pub mod stderr_length_check;
pub mod update_lints;
}
#[must_use]
-pub fn gen_register_lint_list<'a>(lints: impl Iterator<Item = &'a Lint>) -> Vec<String> {
- let pre = " store.register_lints(&[".to_string();
- let post = " ]);".to_string();
- let mut inner = lints
+pub fn gen_register_lint_list<'a>(
+ internal_lints: impl Iterator<Item = &'a Lint>,
+ usable_lints: impl Iterator<Item = &'a Lint>,
+) -> Vec<String> {
+ let header = " store.register_lints(&[".to_string();
+ let footer = " ]);".to_string();
+ let internal_lints = internal_lints
+ .sorted_by_key(|l| format!(" &{}::{},", l.module, l.name.to_uppercase()))
+ .map(|l| {
+ format!(
+ " #[cfg(feature = \"internal-lints\")]\n &{}::{},",
+ l.module,
+ l.name.to_uppercase()
+ )
+ });
+ let other_lints = usable_lints
+ .sorted_by_key(|l| format!(" &{}::{},", l.module, l.name.to_uppercase()))
.map(|l| format!(" &{}::{},", l.module, l.name.to_uppercase()))
- .sorted()
- .collect::<Vec<String>>();
- inner.insert(0, pre);
- inner.push(post);
- inner
+ .sorted();
+ let mut lint_list = vec![header];
+ lint_list.extend(internal_lints);
+ lint_list.extend(other_lints);
+ lint_list.push(footer);
+ lint_list
}
/// Gathers all files in `src/clippy_lints` and gathers all lints inside