This is a tracking issue for working towards properly specifying how lint levels are determined. This tracking issue is intended to serve as a connecting hub between related issues / discussions and efforts towards properly specifying the lint level mechanism. This tracking issue intentionally combines the "language side" (the concept of lint levels and lints, and in-source lint level attributes) and the "implementation side" (compiler flags), because both are underspecified and under-tested.
Notable lint level "components"
| Language side |
Compiler side |
| Lint levels |
Lint level flags -F/D/W/A |
Lint level attributes (e.g. #[forbid(..)]) |
--cap-lints |
Lint expectations (#[expect(..)]) |
--force-warn |
| Lint groups |
|
The warnings special lint group |
|
| Lexical scoping of lint level attributes |
|
Notable interactions
- Between
warnings and lint groups, and constituent lints.
- Lint level flags and annotations, versus
--cap-lints and --force-warn
- Between
--cap-lints and --force-warn
- Lint level flags versus in-source lint level attributes
#[forbid(..)] and #[deny(..)], and macros
- Precedence: ordering of the lint level affecting compiler flags, and their interactions with lint level attributes: e.g.
-A warnings -D lint is not necessarily the same as -D lint -A warnings (?)
- Non-interactions: non-lint warnings and errors
Existing public-facing documentation
Possible bugs, unclear/unintuitive behavior and unresolved questions
This section is incomplete.
Related discussions
This section is incomplete.
Significant lint level related decisions and changes
This section is incomplete.
Steps towards properly specifying lint level mechanism
This section is a work-in-progress.
This is a tracking issue for working towards properly specifying how lint levels are determined. This tracking issue is intended to serve as a connecting hub between related issues / discussions and efforts towards properly specifying the lint level mechanism. This tracking issue intentionally combines the "language side" (the concept of lint levels and lints, and in-source lint level attributes) and the "implementation side" (compiler flags), because both are underspecified and under-tested.
Notable lint level "components"
-F/D/W/A#[forbid(..)])--cap-lints#[expect(..)])--force-warnwarningsspecial lint groupNotable interactions
warningsand lint groups, and constituent lints.--cap-lintsand--force-warn--cap-lintsand--force-warn#[forbid(..)]and#[deny(..)], and macros-A warnings -D lintis not necessarily the same as-D lint -A warnings(?)Existing public-facing documentation
Possible bugs, unclear/unintuitive behavior and unresolved questions
This section is incomplete.
Related discussions
This section is incomplete.
warningslevel for a specific lint via command line #113307 (comment)Significant lint level related decisions and changes
This section is incomplete.
#[deny]inside#[forbid]as a no-op#[expect]some lints: Stabilizelint_reasons(RFC 2383)#[expect]attributeSteps towards properly specifying lint level mechanism
This section is a work-in-progress.
-A unused).