Skip to content

Commit 570d2e8

Browse files
committed
fix: Clean up warnings about lints feature
1 parent c933391 commit 570d2e8

File tree

2 files changed

+51
-21
lines changed

2 files changed

+51
-21
lines changed

src/cargo/util/toml/mod.rs

+31-2
Original file line numberDiff line numberDiff line change
@@ -2928,14 +2928,43 @@ fn parse_unstable_lints<T: Deserialize<'static>>(
29282928
) -> CargoResult<Option<T>> {
29292929
let Some(lints) = lints else { return Ok(None); };
29302930

2931-
if let Err(unstable_err) = features.require(Feature::lints()) {
2932-
let _ = config.shell().warn(unstable_err);
2931+
if !features.is_enabled(Feature::lints()) {
2932+
warn_for_feature("lints", config);
29332933
return Ok(None);
29342934
}
29352935

29362936
lints.try_into().map(Some).map_err(|err| err.into())
29372937
}
29382938

2939+
fn warn_for_feature(name: &str, config: &Config) {
2940+
use std::fmt::Write as _;
2941+
2942+
let mut message = String::new();
2943+
2944+
let _ = write!(
2945+
message,
2946+
"feature `{name}` is not supported on this version of Cargo and will be ignored"
2947+
);
2948+
if config.nightly_features_allowed {
2949+
let _ = write!(
2950+
message,
2951+
"
2952+
2953+
consider adding `cargo-features = [\"{name}\"]` to the manifest"
2954+
);
2955+
} else {
2956+
let _ = write!(
2957+
message,
2958+
"
2959+
2960+
this Cargo does not support nightly features, but if you
2961+
switch to nightly channel you can add
2962+
`cargo-features = [\"{name}\"]` to enable this feature",
2963+
);
2964+
}
2965+
let _ = config.shell().warn(&message);
2966+
}
2967+
29392968
fn verify_lints(lints: Option<TomlLints>) -> CargoResult<Option<TomlLints>> {
29402969
let Some(lints) = lints else { return Ok(None); };
29412970

tests/testsuite/lints.rs

+20-19
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,17 @@ fn package_requires_option() {
2323

2424
foo.cargo("check")
2525
.with_status(0)
26-
.with_stderr("\
27-
warning: feature `lints` is required
28-
29-
The package requires the Cargo feature called `lints`, but that feature is not stabilized in this version of Cargo ([..]).
30-
Consider trying a newer version of Cargo (this may require the nightly release).
31-
See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#lints for more information about the status of this feature.
26+
.with_stderr(
27+
"\
28+
warning: feature `lints` is not supported on this version of Cargo and will be ignored
3229
30+
this Cargo does not support nightly features, but if you
31+
switch to nightly channel you can add
32+
`cargo-features = [\"lints\"]` to enable this feature
3333
[CHECKING] [..]
3434
[FINISHED] [..]
35-
")
35+
",
36+
)
3637
.run();
3738
}
3839

@@ -56,16 +57,17 @@ fn workspace_requires_option() {
5657

5758
foo.cargo("check")
5859
.with_status(0)
59-
.with_stderr("\
60-
warning: feature `lints` is required
61-
62-
The package requires the Cargo feature called `lints`, but that feature is not stabilized in this version of Cargo ([..]).
63-
Consider trying a newer version of Cargo (this may require the nightly release).
64-
See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#lints for more information about the status of this feature.
60+
.with_stderr(
61+
"\
62+
warning: feature `lints` is not supported on this version of Cargo and will be ignored
6563
64+
this Cargo does not support nightly features, but if you
65+
switch to nightly channel you can add
66+
`cargo-features = [\"lints\"]` to enable this feature
6667
[CHECKING] [..]
6768
[FINISHED] [..]
68-
")
69+
",
70+
)
6971
.run();
7072
}
7173

@@ -90,12 +92,11 @@ fn malformed_on_stable() {
9092
.with_status(0)
9193
.with_stderr(
9294
"\
93-
warning: feature `lints` is required
94-
95-
The package requires the Cargo feature called `lints`, but that feature is not stabilized in this version of Cargo ([..]).
96-
Consider trying a newer version of Cargo (this may require the nightly release).
97-
See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#lints for more information about the status of this feature.
95+
warning: feature `lints` is not supported on this version of Cargo and will be ignored
9896
97+
this Cargo does not support nightly features, but if you
98+
switch to nightly channel you can add
99+
`cargo-features = [\"lints\"]` to enable this feature
99100
[CHECKING] [..]
100101
[FINISHED] [..]
101102
",

0 commit comments

Comments
 (0)