Struct rustc_lint::context::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 LateLintPass<'tcx> + Send + Sync + 'static> + Send + Sync>>,
    pub late_module_passes: Vec<Box<dyn Fn() -> Box<dyn 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>
Expand description

Registered lints.

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

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 LateLintPass<'tcx> + Send + Sync + 'static> + Send + Sync>>late_module_passes: Vec<Box<dyn Fn() -> Box<dyn LateLintPass<'tcx> + Send + Sync + 'static> + Send + Sync>>
Expand description

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

by_name: FxHashMap<String, TargetLint>
Expand description

Lints indexed by name.

lint_groups: FxHashMap<&'static str, LintGroup>
Expand description

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

Implementations

impl LintStore[src]

pub fn new() -> LintStore[src]

pub fn get_lints<'t>(&'t self) -> &'t [&'static Lint][src]

pub fn get_lint_groups<'t>(&'t self) -> Vec<(&'static str, Vec<LintId>, bool)>[src]

pub fn register_early_pass(
    &mut self,
    pass: impl Fn() -> Box<dyn EarlyLintPass + Send + Sync + 'static> + 'static + Send + Sync
)
[src]

pub fn register_pre_expansion_pass(
    &mut self,
    pass: impl Fn() -> Box<dyn EarlyLintPass + Send + Sync + 'static> + 'static + Send + Sync
)
[src]

Used by clippy.

pub fn register_late_pass(
    &mut self,
    pass: impl Fn() -> Box<dyn LateLintPass<'tcx> + Send + Sync + 'static> + 'static + Send + Sync
)
[src]

pub fn register_late_mod_pass(
    &mut self,
    pass: impl Fn() -> Box<dyn LateLintPass<'tcx> + Send + Sync + 'static> + 'static + Send + Sync
)
[src]

pub fn register_lints(&mut self, lints: &[&'static Lint])[src]

pub fn register_group_alias(
    &mut self,
    lint_name: &'static str,
    alias: &'static str
)
[src]

pub fn register_group(
    &mut self,
    from_plugin: bool,
    name: &'static str,
    deprecated_name: Option<&'static str>,
    to: Vec<LintId>
)
[src]

pub fn register_alias(&mut self, old_name: &str, new_name: &str)[src]

This lint should be available with either the old or the new name.

Using the old name will not give a warning. You must register a lint with the new name before calling this function.

pub fn register_ignored(&mut self, name: &str)[src]

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.

pub fn register_renamed(&mut self, old_name: &str, new_name: &str)[src]

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

pub fn register_removed(&mut self, name: &str, reason: &str)[src]

pub fn find_lints(&self, lint_name: &str) -> Result<Vec<LintId>, FindLintError>[src]

pub fn check_lint_name_cmdline(
    &self,
    sess: &Session,
    lint_name: &str,
    level: Level
)
[src]

Checks the validity of lint names derived from the command line

pub fn is_lint_group(&self, lint_name: Symbol) -> bool[src]

True if this symbol represents a lint group name.

pub fn check_lint_name(
    &self,
    lint_name: &str,
    tool_name: Option<Symbol>
) -> CheckLintNameResult<'_>
[src]

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.

fn no_lint_suggestion(&self, lint_name: &str) -> CheckLintNameResult<'_>[src]

fn check_tool_name_for_backwards_compat(
    &self,
    lint_name: &str,
    tool_name: &str
) -> CheckLintNameResult<'_>
[src]

Trait Implementations

impl SessionLintStore for LintStore[src]

fn name_to_lint(&self, lint_name: &str) -> LintId[src]

Auto Trait Implementations

impl !RefUnwindSafe for LintStore

impl !Send for LintStore

impl !Sync for LintStore

impl Unpin for LintStore

impl !UnwindSafe for LintStore

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized, 
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized, 
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized, 
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.