Skip to content

Commit

Permalink
Lint direct priority conflicts in [lints.workspace]
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexendoo committed Apr 28, 2024
1 parent c6bf954 commit fa8f4b8
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 2 deletions.
13 changes: 12 additions & 1 deletion clippy_lints/src/cargo/lint_groups_priority.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,17 +49,26 @@ impl LintConfig {

type LintTable = BTreeMap<Spanned<String>, Spanned<LintConfig>>;

#[derive(Deserialize, Debug)]
#[derive(Deserialize, Debug, Default)]
struct Lints {
#[serde(default)]
rust: LintTable,
#[serde(default)]
clippy: LintTable,
}

#[derive(Deserialize, Debug, Default)]
struct Workspace {
#[serde(default)]
lints: Lints,
}

#[derive(Deserialize, Debug)]
struct CargoToml {
#[serde(default)]
lints: Lints,
#[serde(default)]
workspace: Workspace,
}

#[derive(Default, Debug)]
Expand Down Expand Up @@ -164,5 +173,7 @@ pub fn check(cx: &LateContext<'_>) {

check_table(cx, cargo_toml.lints.rust, &rustc_groups, &file);
check_table(cx, cargo_toml.lints.clippy, &clippy_groups, &file);
check_table(cx, cargo_toml.workspace.lints.rust, &rustc_groups, &file);
check_table(cx, cargo_toml.workspace.lints.clippy, &clippy_groups, &file);
}
}
30 changes: 29 additions & 1 deletion tests/ui-cargo/lint_groups_priority/fail/Cargo.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,32 @@ help: to have lints override the group set `pedantic` to a lower priority
19 | pedantic = { level = "warn", priority = -2 }
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: could not compile `fail` (lib) due to 3 previous errors
error: lint group `rust_2018_idioms` has the same priority (0) as a lint
--> Cargo.toml:23:1
|
23 | rust_2018_idioms = "warn"
| ^^^^^^^^^^^^^^^^ ------ has an implicit priority of 0
24 | bare_trait_objects = "allow"
| ------------------ has the same priority as this lint
|
= note: the order of the lints in the table is ignored by Cargo
help: to have lints override the group set `rust_2018_idioms` to a lower priority
|
23 | rust_2018_idioms = { level = "warn", priority = -1 }
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: lint group `pedantic` has the same priority (0) as a lint
--> Cargo.toml:27:1
|
27 | pedantic = "warn"
| ^^^^^^^^ ------ has an implicit priority of 0
28 | similar_names = "allow"
| ------------- has the same priority as this lint
|
= note: the order of the lints in the table is ignored by Cargo
help: to have lints override the group set `pedantic` to a lower priority
|
27 | pedantic = { level = "warn", priority = -1 }
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: could not compile `fail` (lib) due to 5 previous errors
8 changes: 8 additions & 0 deletions tests/ui-cargo/lint_groups_priority/fail/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,11 @@ deprecated = "allow"
[lints.clippy]
pedantic = { level = "warn", priority = -1 }
similar_names = { level = "allow", priority = -1 }

[workspace.lints.rust]
rust_2018_idioms = "warn"
bare_trait_objects = "allow"

[workspace.lints.clippy]
pedantic = "warn"
similar_names = "allow"

0 comments on commit fa8f4b8

Please sign in to comment.