Struct rustc_lint::LintStore[][src]

pub struct LintStore {
    lints: Vec<&'static Lint>,
    pub pre_expansion_passes: Vec<Box<dyn Fn() -> Box<dyn EarlyLintPass + Send + Sync + 'static> + Send + Sync>>,
    pub early_passes: Vec<Box<dyn Fn() -> Box<dyn EarlyLintPass + Send + Sync + 'static> + Send + Sync>>,
    pub late_passes: Vec<Box<dyn Fn() -> Box<dyn for<'tcx> LateLintPass<'tcx> + Send + Sync + 'static> + Send + Sync>>,
    pub late_module_passes: Vec<Box<dyn Fn() -> Box<dyn for<'tcx> LateLintPass<'tcx> + Send + Sync + 'static> + Send + Sync>>,
    by_name: FxHashMap<String, TargetLint>,
    lint_groups: FxHashMap<&'static str, LintGroup>,
}
Expand description

Information about the registered lints.

This is basically the subset of Context that we can build early in the compile pipeline.

Fields

lints: Vec<&'static Lint>

Registered lints.

pre_expansion_passes: Vec<Box<dyn Fn() -> Box<dyn EarlyLintPass + Send + Sync + 'static> + Send + Sync>>

Constructor functions for each variety of lint pass.

These should only be called once, but since we want to avoid locks or interior mutability, we don’t enforce this (and lints should, in theory, be compatible with being constructed more than once, though not necessarily in a sane manner. This is safe though.)

early_passes: Vec<Box<dyn Fn() -> Box<dyn EarlyLintPass + Send + Sync + 'static> + Send + Sync>>late_passes: Vec<Box<dyn Fn() -> Box<dyn for<'tcx> LateLintPass<'tcx> + Send + Sync + 'static> + Send + Sync>>late_module_passes: Vec<Box<dyn Fn() -> Box<dyn for<'tcx> LateLintPass<'tcx> + Send + Sync + 'static> + Send + Sync>>

This is unique in that we construct them per-module, so not once.

by_name: FxHashMap<String, TargetLint>

Lints indexed by name.

lint_groups: FxHashMap<&'static str, LintGroup>

Map of registered lint groups to what lints they expand to.

Implementations

Used by clippy.

This lint should give no warning and have no effect.

This is used by rustc to avoid warning about old rustdoc lints before rustdoc registers them as tool lints.

This lint has been renamed; warn about using the new name and apply the lint.

Checks the validity of lint names derived from the command line.

True if this symbol represents a lint group name.

Checks the name of a lint for its existence, and whether it was renamed or removed. Generates a DiagnosticBuilder containing a warning for renamed and removed lints. This is over both lint names from attributes and those passed on the command line. Since it emits non-fatal warnings and there are two lint passes that inspect attributes, this is only run from the late pass to avoid printing duplicate warnings.

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Layout

Note: Most layout information is completely unstable and may be different between compiler versions and platforms. The only exception is types with certain repr(...) attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.

Size: 184 bytes