Skip to content

Commit e91b2ba

Browse files
authored
refactor(lints): move from cargo::util::lints to cargo::lints (#16392)
### What does this PR try to resolve? move lints module from `cargo::util::lints` to `cargo::lints`, and also organize lints definitions under `rules/` module. ### How to test and review this PR? r? Muscraft
2 parents 1a3faba + 63eaa5b commit e91b2ba

File tree

12 files changed

+56
-49
lines changed

12 files changed

+56
-49
lines changed

crates/xtask-lint-docs/src/main.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
use cargo::lints::Lint;
2+
use cargo::lints::LintLevel;
13
use cargo::util::command_prelude::{ArgMatchesExt, flag};
2-
use cargo::util::lints::{Lint, LintLevel};
34
use itertools::Itertools;
5+
46
use std::fmt::Write;
57
use std::path::PathBuf;
68

@@ -18,10 +20,7 @@ fn main() -> anyhow::Result<()> {
1820
let mut forbid = Vec::new();
1921

2022
let mut lint_docs = String::new();
21-
for lint in cargo::util::lints::LINTS
22-
.iter()
23-
.sorted_by_key(|lint| lint.name)
24-
{
23+
for lint in cargo::lints::LINTS.iter().sorted_by_key(|lint| lint.name) {
2524
if lint.docs.is_some() {
2625
let sectipn = match lint.default_level {
2726
LintLevel::Allow => &mut allow,

src/cargo/core/compiler/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,19 +92,21 @@ pub use self::lto::Lto;
9292
use self::output_depinfo::output_depinfo;
9393
use self::output_sbom::build_sbom;
9494
use self::unit_graph::UnitDep;
95+
9596
use crate::core::compiler::future_incompat::FutureIncompatReport;
9697
use crate::core::compiler::timings::SectionTiming;
9798
pub use crate::core::compiler::unit::{Unit, UnitInterner};
9899
use crate::core::manifest::TargetSourcePath;
99100
use crate::core::profiles::{PanicStrategy, Profile, StripInner};
100101
use crate::core::{Feature, PackageId, Target, Verbosity};
102+
use crate::lints::get_key_value;
101103
use crate::util::OnceExt;
102104
use crate::util::context::WarningHandling;
103105
use crate::util::errors::{CargoResult, VerboseError};
104106
use crate::util::interning::InternedString;
105-
use crate::util::lints::get_key_value;
106107
use crate::util::machine_message::{self, Message};
107108
use crate::util::{add_path_args, internal, path_args};
109+
108110
use cargo_util::{ProcessBuilder, ProcessError, paths};
109111
use cargo_util_schemas::manifest::TomlDebugInfo;
110112
use cargo_util_schemas::manifest::TomlTrimPaths;

src/cargo/core/workspace.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,22 @@ use crate::core::{
2020
Dependency, Edition, FeatureValue, PackageId, PackageIdSpec, PackageIdSpecQuery,
2121
};
2222
use crate::core::{EitherManifest, Package, SourceId, VirtualManifest};
23+
use crate::lints::analyze_cargo_lints_table;
24+
use crate::lints::rules::blanket_hint_mostly_unused;
25+
use crate::lints::rules::check_im_a_teapot;
26+
use crate::lints::rules::implicit_minimum_version_req;
2327
use crate::ops;
2428
use crate::sources::{CRATES_IO_INDEX, CRATES_IO_REGISTRY, PathSource, SourceConfigMap};
2529
use crate::util::context::FeatureUnification;
2630
use crate::util::edit_distance;
2731
use crate::util::errors::{CargoResult, ManifestError};
2832
use crate::util::interning::InternedString;
29-
use crate::util::lints::analyze_cargo_lints_table;
30-
use crate::util::lints::blanket_hint_mostly_unused;
31-
use crate::util::lints::check_im_a_teapot;
32-
use crate::util::lints::implicit_minimum_version_req;
3333
use crate::util::toml::{InheritableFields, read_manifest};
3434
use crate::util::{
3535
Filesystem, GlobalContext, IntoUrl, context::CargoResolverConfig, context::ConfigRelativePath,
3636
context::IncompatibleRustVersions,
3737
};
38+
3839
use cargo_util::paths;
3940
use cargo_util::paths::normalize_path;
4041
use cargo_util_schemas::manifest;

src/cargo/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ pub const CARGO_ENV: &str = "CARGO";
155155
mod macros;
156156

157157
pub mod core;
158+
pub mod lints;
158159
pub mod ops;
159160
pub mod sources;
160161
pub mod util;
Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,10 @@ use std::fmt::Display;
1313
use std::ops::Range;
1414
use std::path::Path;
1515

16-
mod blanket_hint_mostly_unused;
17-
pub use blanket_hint_mostly_unused::blanket_hint_mostly_unused;
18-
mod implicit_minimum_version_req;
19-
pub use implicit_minimum_version_req::implicit_minimum_version_req;
20-
mod im_a_teapot;
21-
pub use im_a_teapot::check_im_a_teapot;
22-
mod unknown_lints;
23-
use unknown_lints::output_unknown_lints;
16+
pub mod rules;
17+
pub use rules::LINTS;
2418

2519
const LINT_GROUPS: &[LintGroup] = &[TEST_DUMMY_UNSTABLE];
26-
pub const LINTS: &[Lint] = &[
27-
blanket_hint_mostly_unused::LINT,
28-
implicit_minimum_version_req::LINT,
29-
im_a_teapot::LINT,
30-
unknown_lints::LINT,
31-
];
3220

3321
/// Scope at which a lint runs: package-level or workspace-level.
3422
pub enum ManifestFor<'a> {
@@ -129,7 +117,7 @@ pub fn analyze_cargo_lints_table(
129117
}
130118
}
131119

132-
output_unknown_lints(
120+
rules::output_unknown_lints(
133121
unknown_lints,
134122
&manifest,
135123
&manifest_path,
@@ -506,7 +494,7 @@ mod tests {
506494

507495
#[test]
508496
fn ensure_updated_lints() {
509-
let dir = snapbox::utils::current_dir!();
497+
let dir = snapbox::utils::current_dir!().join("rules");
510498
let mut expected = HashSet::new();
511499
for entry in std::fs::read_dir(&dir).unwrap() {
512500
let entry = entry.unwrap();

src/cargo/util/lints/blanket_hint_mostly_unused.rs renamed to src/cargo/lints/rules/blanket_hint_mostly_unused.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ use cargo_util_schemas::manifest::TomlToolLints;
1010
use crate::CargoResult;
1111
use crate::GlobalContext;
1212
use crate::core::MaybePackage;
13-
use crate::util::lints::Lint;
14-
use crate::util::lints::LintLevel;
15-
use crate::util::lints::get_key_value_span;
16-
use crate::util::lints::rel_cwd_manifest_path;
13+
use crate::lints::Lint;
14+
use crate::lints::LintLevel;
15+
use crate::lints::get_key_value_span;
16+
use crate::lints::rel_cwd_manifest_path;
1717

1818
pub const LINT: Lint = Lint {
1919
name: "blanket_hint_mostly_unused",
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ use crate::CargoResult;
1010
use crate::GlobalContext;
1111
use crate::core::Feature;
1212
use crate::core::Package;
13-
use crate::util::lints::Lint;
14-
use crate::util::lints::LintLevel;
15-
use crate::util::lints::TEST_DUMMY_UNSTABLE;
16-
use crate::util::lints::get_key_value_span;
17-
use crate::util::lints::rel_cwd_manifest_path;
13+
use crate::lints::Lint;
14+
use crate::lints::LintLevel;
15+
use crate::lints::TEST_DUMMY_UNSTABLE;
16+
use crate::lints::get_key_value_span;
17+
use crate::lints::rel_cwd_manifest_path;
1818

1919
/// This lint is only to be used for testing purposes
2020
pub const LINT: Lint = Lint {

src/cargo/util/lints/implicit_minimum_version_req.rs renamed to src/cargo/lints/rules/implicit_minimum_version_req.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ use crate::GlobalContext;
1616
use crate::core::Manifest;
1717
use crate::core::MaybePackage;
1818
use crate::core::Package;
19+
use crate::lints::Lint;
20+
use crate::lints::LintLevel;
21+
use crate::lints::LintLevelReason;
22+
use crate::lints::ManifestFor;
23+
use crate::lints::get_key_value;
24+
use crate::lints::rel_cwd_manifest_path;
1925
use crate::util::OptVersionReq;
20-
use crate::util::lints::Lint;
21-
use crate::util::lints::LintLevel;
22-
use crate::util::lints::LintLevelReason;
23-
use crate::util::lints::ManifestFor;
24-
use crate::util::lints::get_key_value;
25-
use crate::util::lints::rel_cwd_manifest_path;
2626

2727
pub const LINT: Lint = Lint {
2828
name: "implicit_minimum_version_req",

src/cargo/lints/rules/mod.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
mod blanket_hint_mostly_unused;
2+
mod im_a_teapot;
3+
mod implicit_minimum_version_req;
4+
mod unknown_lints;
5+
6+
pub use blanket_hint_mostly_unused::blanket_hint_mostly_unused;
7+
pub use im_a_teapot::check_im_a_teapot;
8+
pub use implicit_minimum_version_req::implicit_minimum_version_req;
9+
pub use unknown_lints::output_unknown_lints;
10+
11+
pub const LINTS: &[crate::lints::Lint] = &[
12+
blanket_hint_mostly_unused::LINT,
13+
implicit_minimum_version_req::LINT,
14+
im_a_teapot::LINT,
15+
unknown_lints::LINT,
16+
];
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ use cargo_util_schemas::manifest::TomlToolLints;
66

77
use crate::CargoResult;
88
use crate::GlobalContext;
9-
use crate::util::lints::LINT_GROUPS;
10-
use crate::util::lints::LINTS;
11-
use crate::util::lints::Lint;
12-
use crate::util::lints::LintLevel;
13-
use crate::util::lints::ManifestFor;
14-
use crate::util::lints::get_key_value_span;
9+
use crate::lints::LINT_GROUPS;
10+
use crate::lints::LINTS;
11+
use crate::lints::Lint;
12+
use crate::lints::LintLevel;
13+
use crate::lints::ManifestFor;
14+
use crate::lints::get_key_value_span;
1515

1616
pub const LINT: Lint = Lint {
1717
name: "unknown_lints",

0 commit comments

Comments
 (0)