pub struct LintCheck {
pub tool: Option<Ident>,
pub lint_name: Symbol,
pub lint_span: Span,
pub kind: LintCheckKind,
pub reason: Option<Symbol>,
pub attr_id: HashIgnoredAttrId,
pub attr_span: Span,
pub rest: Option<Box<[Symbol]>>,
}Expand description
A lint check attribute.
For example #[deny(clippy::blah, reason = "reason")] is lowered into this.
These are smooshed and flattened together;
#[allow(dead_code)]
#[deny(unused, unsafe_code)]is lowered into
#[attr = LintCheck([
LintCheck { lint_name: "dead_code", kind: Allow },
LintCheck { lint_name: "unused", kind: Deny },
LintCheck { lint_name: "unsafe_code", kind: Deny },
])]Fields§
§tool: Option<Ident>The lint’s tool name, if present.
lint_name: SymbolThe lint’s name.
With e.g. clippy::blah this will be blah.
Any extra segments are stored in rest.
lint_span: SpanThe span of the lint name.
For example #[deny(foo, bar, reason = "reason")]
produces multiple LintChecks, one with a span pointing to foo
and another pointing to bar.
kind: LintCheckKind§reason: Option<Symbol>§attr_id: HashIgnoredAttrIdNeeded by LintExpectationId to track fulfilled expectations
attr_span: SpanThe span of the attribute this lintcheck came from.
Like mentioned above, multiple lint attributes and multiple lints
inside one attribute are all smooshed and flattened together, so
multiple LintChecks can have the same attr_span.
rest: Option<Box<[Symbol]>>Any extra segments of the lint name (not including tool and lint_name),
this should be rare and indicates misuse of the attribute as nothing supports
3+ segment lints like #[allow(tool::two::three)].
Trait Implementations§
Source§impl<__D: SpanDecoder> Decodable<__D> for LintCheck
impl<__D: SpanDecoder> Decodable<__D> for LintCheck
Source§impl<__E: SpanEncoder> Encodable<__E> for LintCheck
impl<__E: SpanEncoder> Encodable<__E> for LintCheck
Source§impl PrintAttribute for LintCheck
impl PrintAttribute for LintCheck
Source§fn should_render(&self) -> bool
fn should_render(&self) -> bool
fn print_attribute(&self, __p: &mut Printer)
Source§impl StableHash for LintCheck
impl StableHash for LintCheck
fn stable_hash<__Hcx: StableHashCtxt>( &self, __hcx: &mut __Hcx, __hasher: &mut StableHasher, )
Auto Trait Implementations§
impl DynSend for LintCheck
impl DynSync for LintCheck
impl Freeze for LintCheck
impl RefUnwindSafe for LintCheck
impl Send for LintCheck
impl Sync for LintCheck
impl Unpin for LintCheck
impl UnsafeUnpin for LintCheck
impl UnwindSafe for LintCheck
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
Source§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. 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: 64 bytes