diff --git a/clippy_dev/src/lib.rs b/clippy_dev/src/lib.rs index 84b2814a7..7423b34f2 100644 --- a/clippy_dev/src/lib.rs +++ b/clippy_dev/src/lib.rs @@ -82,7 +82,7 @@ pub fn gen_lint_group_list(lints: Vec) -> Vec { if l.is_internal() || l.deprecation.is_some() { None } else { - Some(format!(" {}::{},", l.module, l.name.to_uppercase())) + Some(format!(" LintId::of(&{}::{}),", l.module, l.name.to_uppercase())) } }) .sorted() @@ -143,6 +143,20 @@ pub fn gen_deprecated(lints: &[Lint]) -> Vec { .collect::>() } +pub fn gen_register_lint_list(lints: &[Lint]) -> Vec { + let pre = " store.register_lints(&[".to_string(); + let post = " ]);".to_string(); + let mut inner = lints + .iter() + .filter(|l| !(l.is_internal() || l.deprecation.is_some())) + .map(|l| format!(" &{}::{},", l.module, l.name.to_uppercase())) + .sorted() + .collect::>(); + inner.insert(0, pre); + inner.push(post); + inner +} + /// Gathers all files in `src/clippy_lints` and gathers all lints inside pub fn gather_all() -> impl Iterator { lint_files().flat_map(|f| gather_from_file(&f)) @@ -487,8 +501,8 @@ fn test_gen_lint_group_list() { 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(), + " LintId::of(&module_name::ABC),".to_string(), + " LintId::of(&module_name::SHOULD_ASSERT_EQ),".to_string(), ]; assert_eq!(expected, gen_lint_group_list(lints)); } diff --git a/clippy_dev/src/main.rs b/clippy_dev/src/main.rs index 5fa7a87a5..f088504f5 100644 --- a/clippy_dev/src/main.rs +++ b/clippy_dev/src/main.rs @@ -67,7 +67,7 @@ fn main() { match matches.subcommand() { ("fmt", Some(matches)) => { fmt::run(matches.is_present("check"), matches.is_present("verbose")); - }, + } ("update_lints", Some(matches)) => { if matches.is_present("print-only") { print_lints(); @@ -76,8 +76,8 @@ fn main() { } else { update_lints(&UpdateMode::Change); } - }, - _ => {}, + } + _ => {} } } @@ -170,6 +170,16 @@ fn update_lints(update_mode: &UpdateMode) { ) .changed; + file_change |= replace_region_in_file( + "../clippy_lints/src/lib.rs", + "begin register lints", + "end register lints", + false, + update_mode == &UpdateMode::Change, + || gen_register_lint_list(&lint_list), + ) + .changed; + file_change |= replace_region_in_file( "../clippy_lints/src/lib.rs", "begin lints modules", @@ -183,7 +193,7 @@ fn update_lints(update_mode: &UpdateMode) { // Generate lists of lints in the clippy::all lint group file_change |= replace_region_in_file( "../clippy_lints/src/lib.rs", - r#"reg.register_lint_group\("clippy::all""#, + r#"store.register_group\(true, "clippy::all""#, r#"\]\);"#, false, update_mode == &UpdateMode::Change, @@ -206,7 +216,7 @@ fn update_lints(update_mode: &UpdateMode) { for (lint_group, lints) in Lint::by_lint_group(&usable_lints) { file_change |= replace_region_in_file( "../clippy_lints/src/lib.rs", - &format!("reg.register_lint_group\\(\"clippy::{}\"", lint_group), + &format!("store.register_group\\(true, \"clippy::{}\"", lint_group), r#"\]\);"#, false, update_mode == &UpdateMode::Change,