diff --git a/src/cargo/core/features.rs b/src/cargo/core/features.rs index d71d20619ef..1a09b13fe47 100644 --- a/src/cargo/core/features.rs +++ b/src/cargo/core/features.rs @@ -914,7 +914,6 @@ unstable_cli_options!( target_applies_to_host: bool = ("Enable the `target-applies-to-host` key in the .cargo/config.toml file"), trim_paths: bool = ("Enable the `trim-paths` option in profiles"), unstable_options: bool = ("Allow the usage of unstable options"), - warnings: bool = ("Allow use of the build.warnings config key"), ); const STABILIZED_COMPILE_PROGRESS: &str = "The progress bar is now always \ @@ -1001,6 +1000,8 @@ const STABILIZED_BUILD_DIR: &str = "build.build-dir is now always enabled."; const STABILIZED_CONFIG_INCLUDE: &str = "The `include` config key is now always available"; +const STABILIZED_WARNINGS: &str = "The `build.warnings` config key is now always available"; + fn deserialize_comma_separated_list<'de, D>( deserializer: D, ) -> Result>, D::Error> @@ -1389,6 +1390,7 @@ impl CliUnstable { "package-workspace" => stabilized_warn(k, "1.89", STABILIZED_PACKAGE_WORKSPACE), "build-dir" => stabilized_warn(k, "1.91", STABILIZED_BUILD_DIR), "config-include" => stabilized_warn(k, "1.93", STABILIZED_CONFIG_INCLUDE), + "warnings" => stabilized_warn(k, "1.96", STABILIZED_WARNINGS), // Unstable features // Sorted alphabetically: @@ -1456,7 +1458,6 @@ impl CliUnstable { "target-applies-to-host" => self.target_applies_to_host = parse_empty(k, v)?, "panic-immediate-abort" => self.panic_immediate_abort = parse_empty(k, v)?, "unstable-options" => self.unstable_options = parse_empty(k, v)?, - "warnings" => self.warnings = parse_empty(k, v)?, _ => bail!( "\ unknown `-Z` flag specified: {k}\n\n\ diff --git a/src/cargo/util/context/mod.rs b/src/cargo/util/context/mod.rs index e3d30390eb5..2b687821033 100644 --- a/src/cargo/util/context/mod.rs +++ b/src/cargo/util/context/mod.rs @@ -2114,11 +2114,7 @@ impl GlobalContext { /// Get the global [`WarningHandling`] configuration. pub fn warning_handling(&self) -> CargoResult { - if self.unstable_flags.warnings { - Ok(self.build_config()?.warnings.unwrap_or_default()) - } else { - Ok(WarningHandling::default()) - } + Ok(self.build_config()?.warnings.unwrap_or_default()) } pub fn ws_roots(&self) -> MutexGuard<'_, HashMap> { diff --git a/src/doc/src/reference/config.md b/src/doc/src/reference/config.md index 716d13beef7..1a9dd024d7f 100644 --- a/src/doc/src/reference/config.md +++ b/src/doc/src/reference/config.md @@ -64,6 +64,7 @@ recursive_example = "rr --example recursions" space_example = ["run", "--release", "--", "\"command list\""] [build] +warnings = "warn" # adjust the effective lint level for warnings jobs = 1 # number of parallel jobs, defaults to # of CPUs rustc = "rustc" # the rust compiler tool rustc-wrapper = "…" # run this wrapper instead of `rustc` @@ -457,6 +458,20 @@ recursive_example = "rr --example recursions" The `[build]` table controls build-time operations and compiler settings. +### `build.warnings` +* Type: string +* Default: `warn` +* Environment: `CARGO_BUILD_WARNINGS` + +Adjust the effective lint level for warnings. +Allowed values are: +* `warn`: continue to emit the lints as warnings (default). +* `allow`: hide the lints. +* `deny`: emit an error for a crate that has warnings. Use `--keep-going` to see see the warnings for all crates. + +Only warnings within the user's control to resolve or adjust the level of are affected, +e.g. leaving as-is non-lint warnings or warnings from dependencies visible through `--verbose --verbose`. + #### `build.jobs` * Type: integer or string * Default: number of logical CPUs diff --git a/src/doc/src/reference/unstable.md b/src/doc/src/reference/unstable.md index 62c78451367..e79bc26db21 100644 --- a/src/doc/src/reference/unstable.md +++ b/src/doc/src/reference/unstable.md @@ -132,7 +132,6 @@ Each new feature described below should explain how to use it. * [script](#script) --- Enable support for single-file `.rs` packages. * [lockfile-path](#lockfile-path) --- Allows to specify a path to lockfile other than the default path `/Cargo.lock`. * [native-completions](#native-completions) --- Move cargo shell completions to native completions. - * [warnings](#warnings) --- controls warning behavior; options for allowing or denying warnings. * [Package message format](#package-message-format) --- Message format for `cargo package`. * [`fix-edition`](#fix-edition) --- A permanently unstable edition migration helper. * [Plumbing subcommands](https://github.com/crate-ci/cargo-plumbing) --- Low, level commands that act as APIs for Cargo, like `cargo metadata` @@ -1839,28 +1838,6 @@ When in doubt, you can discuss this in [#14520](https://github.com/rust-lang/car - powershell: Add `CARGO_COMPLETE=powershell cargo +nightly | Invoke-Expression` to `$PROFILE`. -## warnings - -* Original Issue: [#8424](https://github.com/rust-lang/cargo/issues/8424) -* Tracking Issue: [#14802](https://github.com/rust-lang/cargo/issues/14802) - -The `-Z warnings` feature enables the `build.warnings` configuration option to control how -Cargo handles warnings. If the `-Z warnings` unstable flag is not enabled, then -the `build.warnings` config will be ignored. - -This setting currently only applies to rustc warnings. It may apply to additional warnings (such as Cargo lints or Cargo warnings) -in the future. - -### `build.warnings` -* Type: string -* Default: `warn` -* Environment: `CARGO_BUILD_WARNINGS` - -Controls how Cargo handles warnings. Allowed values are: -* `warn`: warnings are emitted as warnings (default). -* `allow`: warnings are hidden. -* `deny`: if warnings are emitted, an error will be raised at the end of the current crate and the process. Use `--keep-going` to see all warnings. - ## feature unification * RFC: [#3692](https://github.com/rust-lang/rfcs/blob/master/text/3692-feature-unification.md) @@ -2348,3 +2325,7 @@ See the [`include` config documentation](config.md#include) for more. ## pubtime The `pubtime` index field has been stabilized in Rust 1.94.0. + +## warnings + +The `build.warnings` config field has been stabilized in Rust 1.96. diff --git a/tests/testsuite/cargo/z_help/stdout.term.svg b/tests/testsuite/cargo/z_help/stdout.term.svg index e4f2d6ba0f4..544d3c14585 100644 --- a/tests/testsuite/cargo/z_help/stdout.term.svg +++ b/tests/testsuite/cargo/z_help/stdout.term.svg @@ -1,4 +1,4 @@ - +