[−][src]Module rustc_lint::late

Implementation of lint checking.

The lint checking is mostly consolidated into one pass which runs after all other analyses. Throughout compilation, lint warnings can be added via the add_lint method on the Session structure. This requires a span and an ID of the node that the lint is being added to. The lint isn't actually emitted at that time because it is unknown what the actual lint level at that location is.

To actually emit lint warnings/errors, a separate pass is used. A context keeps track of the current state of all lint levels. Upon entering a node of the ast which can modify the lint settings, the previous lint state is pushed onto a stack and the ast is then recursed upon. As the ast is traversed, this keeps track of the current lint level for all lint attributes.

Structs

LateContextAndPass
LateLintPassObjects

Functions

check_crate

Performs lint checking on a crate.

late_lint_crate
late_lint_mod
late_lint_mod_pass
late_lint_pass_crate
unerased_lint_store

Extract the LintStore from the query context. This function exists because we've erased LintStore as dyn Any in the context.