static NON_UNIX_SYSTEMS: &[&str] = &["hermit", "none", "wasi"];
declare_clippy_lint! {
- /// **What it does:** Checks for items annotated with `#[inline(always)]`,
+ /// ### What it does
+ /// Checks for items annotated with `#[inline(always)]`,
/// unless the annotated function is empty or simply panics.
///
- /// **Why is this bad?** While there are valid uses of this annotation (and once
+ /// ### Why is this bad?
+ /// While there are valid uses of this annotation (and once
/// you know when to use it, by all means `allow` this lint), it's a common
/// newbie-mistake to pepper one's code with it.
///
/// measure if that additional function call really affects your runtime profile
/// sufficiently to make up for the increase in compile time.
///
- /// **Known problems:** False positives, big time. This lint is meant to be
+ /// ### Known problems
+ /// False positives, big time. This lint is meant to be
/// deactivated by everyone doing serious performance work. This means having
/// done the measurement.
///
- /// **Example:**
+ /// ### Example
/// ```ignore
/// #[inline(always)]
/// fn not_quite_hot_code(..) { ... }
}
declare_clippy_lint! {
- /// **What it does:** Checks for `extern crate` and `use` items annotated with
+ /// ### What it does
+ /// Checks for `extern crate` and `use` items annotated with
/// lint attributes.
///
/// This lint permits `#[allow(unused_imports)]`, `#[allow(deprecated)]`,
/// `#[allow(clippy::enum_glob_use)]` on `use` items and `#[allow(unused_imports)]` on
/// `extern crate` items with a `#[macro_use]` attribute.
///
- /// **Why is this bad?** Lint attributes have no effect on crate imports. Most
+ /// ### Why is this bad?
+ /// Lint attributes have no effect on crate imports. Most
/// likely a `!` was forgotten.
///
- /// **Known problems:** None.
- ///
- /// **Example:**
+ /// ### Example
/// ```ignore
/// // Bad
/// #[deny(dead_code)]
}
declare_clippy_lint! {
- /// **What it does:** Checks for `#[deprecated]` annotations with a `since`
+ /// ### What it does
+ /// Checks for `#[deprecated]` annotations with a `since`
/// field that is not a valid semantic version.
///
- /// **Why is this bad?** For checking the version of the deprecation, it must be
+ /// ### Why is this bad?
+ /// For checking the version of the deprecation, it must be
/// a valid semver. Failing that, the contained information is useless.
///
- /// **Known problems:** None.
- ///
- /// **Example:**
+ /// ### Example
/// ```rust
/// #[deprecated(since = "forever")]
/// fn something_else() { /* ... */ }
}
declare_clippy_lint! {
- /// **What it does:** Checks for empty lines after outer attributes
+ /// ### What it does
+ /// Checks for empty lines after outer attributes
///
- /// **Why is this bad?**
+ /// ### Why is this bad?
/// Most likely the attribute was meant to be an inner attribute using a '!'.
/// If it was meant to be an outer attribute, then the following item
/// should not be separated by empty lines.
///
- /// **Known problems:** Can cause false positives.
+ /// ### Known problems
+ /// Can cause false positives.
///
/// From the clippy side it's difficult to detect empty lines between an attributes and the
/// following item because empty lines and comments are not part of the AST. The parsing
/// currently works for basic cases but is not perfect.
///
- /// **Example:**
+ /// ### Example
/// ```rust
/// // Good (as inner attribute)
/// #![allow(dead_code)]
}
declare_clippy_lint! {
- /// **What it does:** Checks for `warn`/`deny`/`forbid` attributes targeting the whole clippy::restriction category.
+ /// ### What it does
+ /// Checks for `warn`/`deny`/`forbid` attributes targeting the whole clippy::restriction category.
///
- /// **Why is this bad?** Restriction lints sometimes are in contrast with other lints or even go against idiomatic rust.
+ /// ### Why is this bad?
+ /// Restriction lints sometimes are in contrast with other lints or even go against idiomatic rust.
/// These lints should only be enabled on a lint-by-lint basis and with careful consideration.
///
- /// **Known problems:** None.
- ///
- /// **Example:**
+ /// ### Example
/// Bad:
/// ```rust
/// #![deny(clippy::restriction)]
}
declare_clippy_lint! {
- /// **What it does:** Checks for `#[cfg_attr(rustfmt, rustfmt_skip)]` and suggests to replace it
+ /// ### What it does
+ /// Checks for `#[cfg_attr(rustfmt, rustfmt_skip)]` and suggests to replace it
/// with `#[rustfmt::skip]`.
///
- /// **Why is this bad?** Since tool_attributes ([rust-lang/rust#44690](https://github.com/rust-lang/rust/issues/44690))
+ /// ### Why is this bad?
+ /// Since tool_attributes ([rust-lang/rust#44690](https://github.com/rust-lang/rust/issues/44690))
/// are stable now, they should be used instead of the old `cfg_attr(rustfmt)` attributes.
///
- /// **Known problems:** This lint doesn't detect crate level inner attributes, because they get
+ /// ### Known problems
+ /// This lint doesn't detect crate level inner attributes, because they get
/// processed before the PreExpansionPass lints get executed. See
/// [#3123](https://github.com/rust-lang/rust-clippy/pull/3123#issuecomment-422321765)
///
- /// **Example:**
- ///
+ /// ### Example
/// Bad:
/// ```rust
/// #[cfg_attr(rustfmt, rustfmt_skip)]
}
declare_clippy_lint! {
- /// **What it does:** Checks for cfg attributes having operating systems used in target family position.
+ /// ### What it does
+ /// Checks for cfg attributes having operating systems used in target family position.
///
- /// **Why is this bad?** The configuration option will not be recognised and the related item will not be included
+ /// ### Why is this bad?
+ /// The configuration option will not be recognised and the related item will not be included
/// by the conditional compilation engine.
///
- /// **Known problems:** None.
- ///
- /// **Example:**
- ///
+ /// ### Example
/// Bad:
/// ```rust
/// #[cfg(linux)]