Crate rustc_lint

source ·
Expand description

Lints, aka compiler warnings.

A ‘lint’ check is a kind of miscellaneous constraint that a user might want to enforce, but might reasonably want to permit as well, on a module-by-module basis. They contrast with static constraints enforced by other phases of the compiler, which are generally required to hold in order to compile the program at all.

Most lints can be written as LintPass instances. These run after all other analyses. The LintPasses built into rustc are defined within rustc_session::lint::builtin, which has further comments on how to add such a lint. rustc can also load external lint plugins, as is done for Clippy.

Some of rustc’s lints are defined elsewhere in the compiler and work by calling add_lint() on the overall Session object. This works when it happens before the main lint pass, which emits the lints stored by add_lint(). To emit lints after the main lint pass (from codegen, for example) requires more effort. See emit_lint and GatherNodeLevels in

Some code also exists in rustc_session::lint, rustc_middle::lint.


This API is completely unstable and subject to change.







  • The array_into_iter lint detects calling into_iter on arrays.
  • The boxed_slice_into_iter lint detects calling into_iter on boxed slices.
  • Raw content of Fluent resource for this crate, generated by fluent_messages macro, imported by rustc_driver to include all crates’ resources in one bundle.



Type Aliases§