Skip to content

Commit 61a252f

Browse files
committed
Auto merge of rust-lang#13221 - Alexendoo:farewell-metadata-collector, r=xFrednet
Replace the metadata collector with tests The metadata collector handles 3 files: [`CHANGELOG.md`](https://github.com/rust-lang/rust-clippy/blob/c082bc2cb85313901ed3565fcd285592ed93df0f/CHANGELOG.md#L6050), [`lint_configuration.md`](https://github.com/rust-lang/rust-clippy/blob/c082bc2cb85313901ed3565fcd285592ed93df0f/book/src/lint_configuration.md) and `util/gh-pages/lints.json` - `CHANGELOG.md` and `lint_configuration.md` are now checked by `tests/config-metadata.rs`, when they are outdated `cargo test` will fail with a message to run `cargo bless --test config-metadata` in order to update them A plain `cargo bless` will run all the tests, blessing both this and the UI tests - `util/gh-pages/lints.json` is now generated when running `cargo uitest` with `COLLECT_METADATA=1` (still aliased to `cargo collect-metadata`) It uses a `ui_test` [post test action](https://docs.rs/ui_test/latest/ui_test/custom_flags/trait.Flag.html#method.post_test_action) to retrieve the applicability from the actual diagnostics emitted during UI tests Example change from the current to new JSON: ```diff { "id": "chars_next_cmp", - "id_span": { - "path": "src/methods/mod.rs", - "line": 891 - }, + "id_location": "clippy_lints/src/methods/mod.rs#891", "group": "style", "level": "warn", - "docs": "\n### What it does ... ```", + "docs": "### What it does ... ```\n", "version": "pre 1.29.0", - "applicability": { - "is_multi_part_suggestion": false, - "applicability": "Unresolved" - } + "applicability": "MachineApplicable" }, ``` `Hide whitespace` makes the `compile-test.rs` changes much easier to see r? `@flip1995` changelog: none
2 parents 8827107 + a22ce2d commit 61a252f

File tree

22 files changed

+473
-1233
lines changed

22 files changed

+473
-1233
lines changed

.cargo/config.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
[alias]
2+
bless = "test --config env.RUSTC_BLESS='1'"
23
uitest = "test --test compile-test"
3-
uibless = "test --test compile-test -- -- --bless"
4-
bless = "test -- -- --bless"
4+
uibless = "bless --test compile-test"
55
dev = "run --package clippy_dev --bin clippy_dev --manifest-path clippy_dev/Cargo.toml --"
66
lintcheck = "run --package lintcheck --bin lintcheck --manifest-path lintcheck/Cargo.toml -- "
7-
collect-metadata = "test --test dogfood --features internal -- collect_metadata"
7+
collect-metadata = "test --test compile-test --config env.COLLECT_METADATA='1'"
88

99
[build]
1010
# -Zbinary-dep-depinfo allows us to track which rlib files to use for compiling UI tests

.github/workflows/clippy_bors.yml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,6 @@ jobs:
136136
- name: Test metadata collection
137137
run: cargo collect-metadata
138138

139-
- name: Test lint_configuration.md is up-to-date
140-
run: |
141-
echo "run \`cargo collect-metadata\` if this fails"
142-
git update-index --refresh
143-
144139
integration_build:
145140
needs: changelog
146141
runs-on: ubuntu-latest

Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,11 @@ color-print = "0.3.4"
3030
anstream = "0.6.0"
3131

3232
[dev-dependencies]
33+
cargo_metadata = "0.18.1"
3334
ui_test = "0.25"
3435
regex = "1.5.5"
36+
serde = { version = "1.0.145", features = ["derive"] }
37+
serde_json = "1.0.122"
3538
toml = "0.7.3"
3639
walkdir = "2.3"
3740
filetime = "0.2.9"
@@ -41,7 +44,6 @@ itertools = "0.12"
4144
clippy_utils = { path = "clippy_utils" }
4245
if_chain = "1.0"
4346
quote = "1.0.25"
44-
serde = { version = "1.0.145", features = ["derive"] }
4547
syn = { version = "2.0", features = ["full"] }
4648
futures = "0.3"
4749
parking_lot = "0.12"

book/src/development/adding_lints.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -739,7 +739,7 @@ for some users. Adding a configuration is done in the following steps:
739739

740740
5. Update [Lint Configuration](../lint_configuration.md)
741741

742-
Run `cargo collect-metadata` to generate documentation changes for the book.
742+
Run `cargo bless --test config-metadata` to generate documentation changes for the book.
743743

744744
[`clippy_config::conf`]: https://github.com/rust-lang/rust-clippy/blob/master/clippy_config/src/conf.rs
745745
[`clippy_lints` lib file]: https://github.com/rust-lang/rust-clippy/blob/master/clippy_lints/src/lib.rs

book/src/lint_configuration.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!--
2-
This file is generated by `cargo collect-metadata`.
2+
This file is generated by `cargo bless --test config-metadata`.
33
Please use that command to update the file and do not edit it by hand.
44
-->
55

@@ -199,7 +199,7 @@ Allowed names below the minimum allowed characters. The value `".."` can be used
199199
the list to indicate, that the configured values should be appended to the default
200200
configuration of Clippy. By default, any configuration will replace the default value.
201201

202-
**Default Value:** `["j", "z", "i", "y", "n", "x", "w"]`
202+
**Default Value:** `["i", "j", "x", "y", "z", "w", "n"]`
203203

204204
---
205205
**Affected lints:**
@@ -455,7 +455,7 @@ default configuration of Clippy. By default, any configuration will replace the
455455
* `doc-valid-idents = ["ClipPy"]` would replace the default list with `["ClipPy"]`.
456456
* `doc-valid-idents = ["ClipPy", ".."]` would append `ClipPy` to the default list.
457457

458-
**Default Value:** `["TiB", "CoreGraphics", "CoffeeScript", "TeX", "Direct2D", "PiB", "DirectX", "NetBSD", "OAuth", "NaN", "OpenType", "WebGL2", "WebTransport", "JavaScript", "OpenSSL", "OpenSSH", "EiB", "PureScript", "OpenAL", "MiB", "WebAssembly", "MinGW", "CoreFoundation", "WebGPU", "ClojureScript", "CamelCase", "OpenDNS", "NaNs", "OpenMP", "GitLab", "KiB", "sRGB", "CoreText", "macOS", "TypeScript", "GiB", "OpenExr", "YCbCr", "OpenTelemetry", "OpenBSD", "FreeBSD", "GPLv2", "PostScript", "WebP", "LaTeX", "TensorFlow", "AccessKit", "TrueType", "OpenStreetMap", "OpenGL", "DevOps", "OCaml", "WebRTC", "WebGL", "BibLaTeX", "GitHub", "GraphQL", "iOS", "Direct3D", "BibTeX", "DirectWrite", "GPLv3", "IPv6", "WebSocket", "IPv4", "ECMAScript"]`
458+
**Default Value:** `["KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "AccessKit", "CoreFoundation", "CoreGraphics", "CoreText", "DevOps", "Direct2D", "Direct3D", "DirectWrite", "DirectX", "ECMAScript", "GPLv2", "GPLv3", "GitHub", "GitLab", "IPv4", "IPv6", "ClojureScript", "CoffeeScript", "JavaScript", "PostScript", "PureScript", "TypeScript", "WebAssembly", "NaN", "NaNs", "OAuth", "GraphQL", "OCaml", "OpenAL", "OpenDNS", "OpenGL", "OpenMP", "OpenSSH", "OpenSSL", "OpenStreetMap", "OpenTelemetry", "OpenType", "WebGL", "WebGL2", "WebGPU", "WebRTC", "WebSocket", "WebTransport", "WebP", "OpenExr", "YCbCr", "sRGB", "TensorFlow", "TrueType", "iOS", "macOS", "FreeBSD", "NetBSD", "OpenBSD", "TeX", "LaTeX", "BibTeX", "BibLaTeX", "MinGW", "CamelCase"]`
459459

460460
---
461461
**Affected lints:**
@@ -949,5 +949,3 @@ Whether to also emit warnings for unsafe blocks with metavariable expansions in
949949
---
950950
**Affected lints:**
951951
* [`macro_metavars_in_unsafe`](https://rust-lang.github.io/rust-clippy/master/index.html#macro_metavars_in_unsafe)
952-
953-

clippy_config/src/conf.rs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use crate::msrvs::Msrv;
22
use crate::types::{DisallowedPath, MacroMatcher, MatchLintBehaviour, PubUnderscoreFieldsBehaviour, Rename};
33
use crate::ClippyConfiguration;
4-
use rustc_data_structures::fx::FxHashSet;
54
use rustc_errors::Applicability;
65
use rustc_session::Session;
76
use rustc_span::edit_distance::edit_distance;
@@ -218,7 +217,7 @@ macro_rules! define_Conf {
218217
define_Conf! {
219218
/// Which crates to allow absolute paths from
220219
#[lints(absolute_paths)]
221-
absolute_paths_allowed_crates: FxHashSet<String> = FxHashSet::default(),
220+
absolute_paths_allowed_crates: Vec<String> = Vec::new(),
222221
/// The maximum number of segments a path can have before being linted, anything above this will
223222
/// be linted.
224223
#[lints(absolute_paths)]
@@ -280,12 +279,12 @@ define_Conf! {
280279
allowed_dotfiles: Vec<String> = Vec::default(),
281280
/// A list of crate names to allow duplicates of
282281
#[lints(multiple_crate_versions)]
283-
allowed_duplicate_crates: FxHashSet<String> = FxHashSet::default(),
282+
allowed_duplicate_crates: Vec<String> = Vec::new(),
284283
/// Allowed names below the minimum allowed characters. The value `".."` can be used as part of
285284
/// the list to indicate, that the configured values should be appended to the default
286285
/// configuration of Clippy. By default, any configuration will replace the default value.
287286
#[lints(min_ident_chars)]
288-
allowed_idents_below_min_chars: FxHashSet<String> =
287+
allowed_idents_below_min_chars: Vec<String> =
289288
DEFAULT_ALLOWED_IDENTS_BELOW_MIN_CHARS.iter().map(ToString::to_string).collect(),
290289
/// List of prefixes to allow when determining whether an item's name ends with the module's name.
291290
/// If the rest of an item's name is an allowed prefix (e.g. item `ToFoo` or `to_foo` in module `foo`),
@@ -323,7 +322,7 @@ define_Conf! {
323322
/// 2. Paths with any segment that containing the word 'prelude'
324323
/// are already allowed by default.
325324
#[lints(wildcard_imports)]
326-
allowed_wildcard_imports: FxHashSet<String> = FxHashSet::default(),
325+
allowed_wildcard_imports: Vec<String> = Vec::new(),
327326
/// Suppress checking of the passed type names in all types of operations.
328327
///
329328
/// If a specific operation is desired, consider using `arithmetic_side_effects_allowed_binary` or `arithmetic_side_effects_allowed_unary` instead.
@@ -355,7 +354,7 @@ define_Conf! {
355354
/// arithmetic-side-effects-allowed-binary = [["SomeType" , "f32"], ["AnotherType", "*"]]
356355
/// ```
357356
#[lints(arithmetic_side_effects)]
358-
arithmetic_side_effects_allowed_binary: Vec<[String; 2]> = <_>::default(),
357+
arithmetic_side_effects_allowed_binary: Vec<(String, String)> = <_>::default(),
359358
/// Suppress checking of the passed type names in unary operations like "negation" (`-`).
360359
///
361360
/// #### Example
@@ -431,7 +430,7 @@ define_Conf! {
431430
/// * `doc-valid-idents = ["ClipPy"]` would replace the default list with `["ClipPy"]`.
432431
/// * `doc-valid-idents = ["ClipPy", ".."]` would append `ClipPy` to the default list.
433432
#[lints(doc_markdown)]
434-
doc_valid_idents: FxHashSet<String> = DEFAULT_DOC_VALID_IDENTS.iter().map(ToString::to_string).collect(),
433+
doc_valid_idents: Vec<String> = DEFAULT_DOC_VALID_IDENTS.iter().map(ToString::to_string).collect(),
435434
/// Whether to apply the raw pointer heuristic to determine if a type is `Send`.
436435
#[lints(non_send_fields_in_send_ty)]
437436
enable_raw_pointer_heuristic_for_send: bool = true,
@@ -706,12 +705,12 @@ fn deserialize(file: &SourceFile) -> TryConf {
706705
DEFAULT_ALLOWED_TRAITS_WITH_RENAMED_PARAMS,
707706
);
708707
// TODO: THIS SHOULD BE TESTED, this comment will be gone soon
709-
if conf.conf.allowed_idents_below_min_chars.contains("..") {
708+
if conf.conf.allowed_idents_below_min_chars.iter().any(|e| e == "..") {
710709
conf.conf
711710
.allowed_idents_below_min_chars
712711
.extend(DEFAULT_ALLOWED_IDENTS_BELOW_MIN_CHARS.iter().map(ToString::to_string));
713712
}
714-
if conf.conf.doc_valid_idents.contains("..") {
713+
if conf.conf.doc_valid_idents.iter().any(|e| e == "..") {
715714
conf.conf
716715
.doc_valid_idents
717716
.extend(DEFAULT_DOC_VALID_IDENTS.iter().map(ToString::to_string));
@@ -890,14 +889,14 @@ fn calculate_dimensions(fields: &[&str]) -> (usize, Vec<usize>) {
890889

891890
#[cfg(test)]
892891
mod tests {
893-
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
894892
use serde::de::IgnoredAny;
893+
use std::collections::{HashMap, HashSet};
895894
use std::fs;
896895
use walkdir::WalkDir;
897896

898897
#[test]
899898
fn configs_are_tested() {
900-
let mut names: FxHashSet<String> = crate::get_configuration_metadata()
899+
let mut names: HashSet<String> = crate::get_configuration_metadata()
901900
.into_iter()
902901
.map(|meta| meta.name.replace('_', "-"))
903902
.collect();
@@ -910,7 +909,7 @@ mod tests {
910909
for entry in toml_files {
911910
let file = fs::read_to_string(entry.path()).unwrap();
912911
#[allow(clippy::zero_sized_map_values)]
913-
if let Ok(map) = toml::from_str::<FxHashMap<String, IgnoredAny>>(&file) {
912+
if let Ok(map) = toml::from_str::<HashMap<String, IgnoredAny>>(&file) {
914913
for name in map.keys() {
915914
names.remove(name.as_str());
916915
}

clippy_config/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
extern crate rustc_ast;
1717
extern crate rustc_attr;
18-
extern crate rustc_data_structures;
1918
#[allow(unused_extern_crates)]
2019
extern crate rustc_driver;
2120
extern crate rustc_errors;

clippy_dev/src/update_lints.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ fn gen_declared_lints<'a>(
604604
details.sort_unstable();
605605

606606
let mut output = GENERATED_FILE_COMMENT.to_string();
607-
output.push_str("pub(crate) static LINTS: &[&crate::LintInfo] = &[\n");
607+
output.push_str("pub static LINTS: &[&crate::LintInfo] = &[\n");
608608

609609
for (is_public, module_name, lint_name) in details {
610610
if !is_public {

clippy_lints/src/cargo/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ declare_clippy_lint! {
205205
}
206206

207207
pub struct Cargo {
208-
allowed_duplicate_crates: &'static FxHashSet<String>,
208+
allowed_duplicate_crates: FxHashSet<String>,
209209
ignore_publish: bool,
210210
}
211211

@@ -221,7 +221,7 @@ impl_lint_pass!(Cargo => [
221221
impl Cargo {
222222
pub fn new(conf: &'static Conf) -> Self {
223223
Self {
224-
allowed_duplicate_crates: &conf.allowed_duplicate_crates,
224+
allowed_duplicate_crates: conf.allowed_duplicate_crates.iter().cloned().collect(),
225225
ignore_publish: conf.cargo_ignore_publish,
226226
}
227227
}
@@ -263,7 +263,7 @@ impl LateLintPass<'_> for Cargo {
263263
{
264264
match MetadataCommand::new().exec() {
265265
Ok(metadata) => {
266-
multiple_crate_versions::check(cx, &metadata, self.allowed_duplicate_crates);
266+
multiple_crate_versions::check(cx, &metadata, &self.allowed_duplicate_crates);
267267
},
268268
Err(e) => {
269269
for lint in WITH_DEPS_LINTS {

clippy_lints/src/declared_lints.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Use that command to update this file and do not edit by hand.
33
// Manual edits will be overwritten.
44

5-
pub(crate) static LINTS: &[&crate::LintInfo] = &[
5+
pub static LINTS: &[&crate::LintInfo] = &[
66
#[cfg(feature = "internal")]
77
crate::utils::internal_lints::almost_standard_lint_formulation::ALMOST_STANDARD_LINT_FORMULATION_INFO,
88
#[cfg(feature = "internal")]
@@ -22,8 +22,6 @@ pub(crate) static LINTS: &[&crate::LintInfo] = &[
2222
#[cfg(feature = "internal")]
2323
crate::utils::internal_lints::lint_without_lint_pass::MISSING_CLIPPY_VERSION_ATTRIBUTE_INFO,
2424
#[cfg(feature = "internal")]
25-
crate::utils::internal_lints::metadata_collector::METADATA_COLLECTOR_INFO,
26-
#[cfg(feature = "internal")]
2725
crate::utils::internal_lints::msrv_attr_impl::MISSING_MSRV_ATTR_IMPL_INFO,
2826
#[cfg(feature = "internal")]
2927
crate::utils::internal_lints::outer_expn_data_pass::OUTER_EXPN_EXPN_DATA_INFO,

clippy_lints/src/doc/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -423,14 +423,14 @@ declare_clippy_lint! {
423423
}
424424

425425
pub struct Documentation {
426-
valid_idents: &'static FxHashSet<String>,
426+
valid_idents: FxHashSet<String>,
427427
check_private_items: bool,
428428
}
429429

430430
impl Documentation {
431431
pub fn new(conf: &'static Conf) -> Self {
432432
Self {
433-
valid_idents: &conf.doc_valid_idents,
433+
valid_idents: conf.doc_valid_idents.iter().cloned().collect(),
434434
check_private_items: conf.check_private_items,
435435
}
436436
}
@@ -452,7 +452,7 @@ impl_lint_pass!(Documentation => [
452452

453453
impl<'tcx> LateLintPass<'tcx> for Documentation {
454454
fn check_attributes(&mut self, cx: &LateContext<'tcx>, attrs: &'tcx [Attribute]) {
455-
let Some(headers) = check_attrs(cx, self.valid_idents, attrs) else {
455+
let Some(headers) = check_attrs(cx, &self.valid_idents, attrs) else {
456456
return;
457457
};
458458

clippy_lints/src/lib.rs

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ extern crate declare_clippy_lint;
6666
#[cfg_attr(feature = "internal", allow(clippy::missing_clippy_version_attribute))]
6767
mod utils;
6868

69-
mod declared_lints;
70-
mod deprecated_lints;
69+
pub mod declared_lints;
70+
pub mod deprecated_lints;
7171

7272
// begin lints modules, do not remove this comment, it’s used in `update_lints`
7373
mod absolute_paths;
@@ -440,7 +440,7 @@ impl RegistrationGroups {
440440
}
441441
}
442442

443-
#[derive(Copy, Clone)]
443+
#[derive(Copy, Clone, Debug)]
444444
pub(crate) enum LintCategory {
445445
Cargo,
446446
Complexity,
@@ -479,11 +479,39 @@ impl LintCategory {
479479
}
480480
}
481481

482-
pub(crate) struct LintInfo {
482+
pub struct LintInfo {
483483
/// Double reference to maintain pointer equality
484-
lint: &'static &'static Lint,
484+
pub lint: &'static &'static Lint,
485485
category: LintCategory,
486-
explanation: &'static str,
486+
pub explanation: &'static str,
487+
/// e.g. `clippy_lints/src/absolute_paths.rs#43`
488+
pub location: &'static str,
489+
pub version: Option<&'static str>,
490+
}
491+
492+
impl LintInfo {
493+
/// Returns the lint name in lowercase without the `clippy::` prefix
494+
#[allow(clippy::missing_panics_doc)]
495+
pub fn name_lower(&self) -> String {
496+
self.lint.name.strip_prefix("clippy::").unwrap().to_ascii_lowercase()
497+
}
498+
499+
/// Returns the name of the lint's category in lowercase (`style`, `pedantic`)
500+
pub fn category_str(&self) -> &'static str {
501+
match self.category {
502+
Cargo => "cargo",
503+
Complexity => "complexity",
504+
Correctness => "correctness",
505+
Nursery => "nursery",
506+
Pedantic => "pedantic",
507+
Perf => "perf",
508+
Restriction => "restriction",
509+
Style => "style",
510+
Suspicious => "suspicious",
511+
#[cfg(feature = "internal")]
512+
Internal => "internal",
513+
}
514+
}
487515
}
488516

489517
pub fn explain(name: &str) -> i32 {
@@ -538,14 +566,6 @@ pub fn register_lints(store: &mut rustc_lint::LintStore, conf: &'static Conf) {
538566
store.register_removed(name, reason);
539567
}
540568

541-
#[cfg(feature = "internal")]
542-
{
543-
if std::env::var("ENABLE_METADATA_COLLECTION").eq(&Ok("1".to_string())) {
544-
store.register_late_pass(|_| Box::new(utils::internal_lints::metadata_collector::MetadataCollector::new()));
545-
return;
546-
}
547-
}
548-
549569
let format_args_storage = FormatArgsStorage::default();
550570
let format_args = format_args_storage.clone();
551571
store.register_early_pass(move || {

clippy_lints/src/min_ident_chars.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,14 @@ declare_clippy_lint! {
4141
impl_lint_pass!(MinIdentChars => [MIN_IDENT_CHARS]);
4242

4343
pub struct MinIdentChars {
44-
allowed_idents_below_min_chars: &'static FxHashSet<String>,
44+
allowed_idents_below_min_chars: FxHashSet<String>,
4545
min_ident_chars_threshold: u64,
4646
}
4747

4848
impl MinIdentChars {
4949
pub fn new(conf: &'static Conf) -> Self {
5050
Self {
51-
allowed_idents_below_min_chars: &conf.allowed_idents_below_min_chars,
51+
allowed_idents_below_min_chars: conf.allowed_idents_below_min_chars.iter().cloned().collect(),
5252
min_ident_chars_threshold: conf.min_ident_chars_threshold,
5353
}
5454
}

clippy_lints/src/operators/arithmetic_side_effects.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ impl ArithmeticSideEffects {
3535
("f64", FxHashSet::from_iter(["f64"])),
3636
("std::string::String", FxHashSet::from_iter(["str"])),
3737
]);
38-
for [lhs, rhs] in &conf.arithmetic_side_effects_allowed_binary {
38+
for (lhs, rhs) in &conf.arithmetic_side_effects_allowed_binary {
3939
allowed_binary.entry(lhs).or_default().insert(rhs);
4040
}
4141
for s in &conf.arithmetic_side_effects_allowed {

clippy_lints/src/utils/internal_lints.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ pub mod collapsible_calls;
33
pub mod interning_defined_symbol;
44
pub mod invalid_paths;
55
pub mod lint_without_lint_pass;
6-
pub mod metadata_collector;
76
pub mod msrv_attr_impl;
87
pub mod outer_expn_data_pass;
98
pub mod produce_ice;

0 commit comments

Comments
 (0)