From 8f075ec961bea50074f96d48be851eccd94a065f Mon Sep 17 00:00:00 2001
From: Michael Wright <mikerite@lavabit.com>
Date: Thu, 7 Oct 2021 06:37:56 +0200
Subject: [PATCH] Revert `update_lints` module list generating code

This commit reverts the module list generation code to what it was
before the change to `include!` it and generates better output.
---
 clippy_dev/src/update_lints.rs | 22 ++++++++++------------
 clippy_lints/src/lib.rs        |  5 -----
 2 files changed, 10 insertions(+), 17 deletions(-)

diff --git a/clippy_dev/src/update_lints.rs b/clippy_dev/src/update_lints.rs
index 6ec812909f2..10d859988f6 100644
--- a/clippy_dev/src/update_lints.rs
+++ b/clippy_dev/src/update_lints.rs
@@ -1,6 +1,6 @@
 use itertools::Itertools;
 use regex::Regex;
-use std::collections::{BTreeSet, HashMap};
+use std::collections::HashMap;
 use std::ffi::OsStr;
 use std::fs;
 use std::lazy::SyncLazy;
@@ -105,7 +105,7 @@ pub fn run(update_mode: UpdateMode) {
         "end lints modules",
         false,
         update_mode == UpdateMode::Change,
-        || vec![gen_modules_list(usable_lints.iter())],
+        || gen_modules_list(usable_lints.iter()),
     )
     .changed;
 
@@ -262,14 +262,13 @@ fn gen_lint_group_list<'a>(group_name: &str, lints: impl Iterator<Item = &'a Lin
 
 /// Generates the module declarations for `lints`
 #[must_use]
-fn gen_modules_list<'a>(lints: impl Iterator<Item = &'a Lint>) -> String {
-    let module_names: BTreeSet<_> = lints.map(|l| &l.module).collect();
-
-    let mut output = GENERATED_FILE_COMMENT.to_string();
-    for name in module_names {
-        output.push_str(&format!("mod {};\n", name));
-    }
-    output
+fn gen_modules_list<'a>(lints: impl Iterator<Item = &'a Lint>) -> Vec<String> {
+    lints
+        .map(|l| &l.module)
+        .unique()
+        .map(|module| format!("mod {};", module))
+        .sorted()
+        .collect::<Vec<String>>()
 }
 
 /// Generates the list of lint links at the bottom of the CHANGELOG
@@ -677,8 +676,7 @@ mod tests {
             Lint::new("should_assert_eq", "group1", "abc", None, "module_name"),
             Lint::new("incorrect_stuff", "group3", "abc", None, "another_module"),
         ];
-        let expected =
-            GENERATED_FILE_COMMENT.to_string() + &["mod another_module;", "mod module_name;"].join("\n") + "\n";
+        let expected = vec!["mod another_module;".to_string(), "mod module_name;".to_string()];
         assert_eq!(expected, gen_modules_list(lints.iter()));
     }
 
diff --git a/clippy_lints/src/lib.rs b/clippy_lints/src/lib.rs
index c2376575cb8..9fc6a9e0ccc 100644
--- a/clippy_lints/src/lib.rs
+++ b/clippy_lints/src/lib.rs
@@ -156,10 +156,6 @@ mod deprecated_lints;
 mod utils;
 
 // begin lints modules, do not remove this comment, it’s used in `update_lints`
-// This file was generated by `cargo dev update_lints`.
-// Use that command to update this file and do not edit by hand.
-// Manual edits will be overwritten.
-
 mod absurd_extreme_comparisons;
 mod approx_const;
 mod arithmetic;
@@ -390,7 +386,6 @@ mod wildcard_imports;
 mod write;
 mod zero_div_zero;
 mod zero_sized_map_values;
-
 // end lints modules, do not remove this comment, it’s used in `update_lints`
 
 pub use crate::utils::conf::Conf;