Conversation
This allows users to either - hide warnings (rust-lang#14258) - error on warnings (rust-lang#8424) `build.warnings` is setup to mirror the behavior of `RUSTFLAGS=-Dwarnings`, including - only errors for lint warnings and not hard warnings - only errors for local warnings and not non-local warnings visible with `--verbose --verbose` - stop the build without `--keep-going` These conditions were not originally met and also came as feedback from rust-lang/rust which has been dogfooding this since the merge of rust-lang/rust#148332. Things are a bit different with `RUSTFLAGS=-Awarnings`: - Hard warnings are hidden for rustc but not cargo (rustc seems in the wrong imo) - In particular, we shouldn't mask the edition warning for Cargo Script - both hide the warning summary line (number of warnings per crate) - both hide non-local warnings for `--verbose --verbose` One design constraint we are operating on with this is that changing `build.warnings` should not cause a rebuild, unlike a `RUSTFLAGS` solution. Closes rust-lang#14802
|
r? @weihanglo rustbot has assigned @weihanglo. Use Why was this reviewer chosen?The reviewer was selected based on:
|
|
@rfcbot fcp merge cargo |
|
Team member @epage has proposed to merge this. The next step is review by the rest of the tagged team members: No concerns currently listed. Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! See this document for info about what commands tagged team members can give me. |
|
Right now, we exactly mirror My one concern is with
From this, I would lean towards making |
| 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`. |
There was a problem hiding this comment.
| 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`. | |
| Only warnings within the user's control to resolve or adjust the level of are affected. | |
| Non-lint warnings or warnings from dependencies visible through `--verbose --verbose` are not affected. |
There was a problem hiding this comment.
I was going for this to be descriptive, rather than prescriptive, and felt listing the cases as examples would help set that tone.
| * Default: `warn` | ||
| * Environment: `CARGO_BUILD_WARNINGS` | ||
|
|
||
| Adjust the effective lint level for warnings. |
There was a problem hiding this comment.
This section seems confusing between the terms lint and warning.
The following sounds like all warnings have a lint level that we're adjusting.
Adjust the effective lint level for warnings.
This sounds like all lints can have an adjustable lint level that we're changing here.
warn: continue to emit the lints as warnings (default).
This is now emitting errors for warnings not lints.
deny: emit an error for a crate that has warnings
There was a problem hiding this comment.
It is tricky to talk about this precisely enough while not adding so many qualifiers that it makes it hard to follow. My intent with the last paragraph ("Only warnings") was to clarify this.
| * `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, |
There was a problem hiding this comment.
Should we be more precise about what "user's control to resolve" means?
There was a problem hiding this comment.
That is what I was seeking to clarify by providing examples.
What does this PR try to resolve?
This allows users to either
--deny-warningsfunctionality for all commands. #8424)build.warningsis setup to mirror the behavior ofRUSTFLAGS=-Dwarnings, including--verbose --verbose--keep-goingThese conditions were not originally met and also came as feedback from rust-lang/rust which has been dogfooding this since the merge of rust-lang/rust#148332.
Things are a bit different with
RUSTFLAGS=-Awarnings:--verbose --verboseOne design constraint we are operating on with this is that changing
build.warningsshould not cause a rebuild, unlike aRUSTFLAGSsolution.Closes #14802
How to test and review this PR?
My main concern over this was how the naming scheme would extend to rust-lang/rfcs#3730 but that RFC has not gained much interest
buildseems as good of a home as any.