improve empty_enum documentation
This commit is contained in:
@@ -8,16 +8,29 @@ use rustc_session::{declare_lint_pass, declare_tool_lint};
|
|||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
/// **What it does:** Checks for `enum`s with no variants.
|
/// **What it does:** Checks for `enum`s with no variants.
|
||||||
///
|
///
|
||||||
/// **Why is this bad?** Enum's with no variants should be replaced with `!`,
|
/// **Why is this bad?** If you want to introduce a type which
|
||||||
/// the uninhabited type,
|
/// can't be instantiated, you should use `!` (the never type),
|
||||||
/// or a wrapper around it.
|
/// or a wrapper around it, because `!` has more extensive
|
||||||
|
/// compiler support (type inference, etc...) and wrappers
|
||||||
|
/// around it are the conventional way to define an uninhabited type.
|
||||||
|
/// For further information visit [never type documentation](https://doc.rust-lang.org/std/primitive.never.html)
|
||||||
|
///
|
||||||
///
|
///
|
||||||
/// **Known problems:** None.
|
/// **Known problems:** None.
|
||||||
///
|
///
|
||||||
/// **Example:**
|
/// **Example:**
|
||||||
|
///
|
||||||
|
/// Bad:
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// enum Test {}
|
/// enum Test {}
|
||||||
/// ```
|
/// ```
|
||||||
|
///
|
||||||
|
/// Good:
|
||||||
|
/// ```rust
|
||||||
|
/// #![feature(never_type)]
|
||||||
|
///
|
||||||
|
/// struct Test(!);
|
||||||
|
/// ```
|
||||||
pub EMPTY_ENUM,
|
pub EMPTY_ENUM,
|
||||||
pedantic,
|
pedantic,
|
||||||
"enum with no variants"
|
"enum with no variants"
|
||||||
@@ -35,7 +48,8 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for EmptyEnum {
|
|||||||
span_lint_and_then(cx, EMPTY_ENUM, item.span, "enum with no variants", |db| {
|
span_lint_and_then(cx, EMPTY_ENUM, item.span, "enum with no variants", |db| {
|
||||||
db.span_help(
|
db.span_help(
|
||||||
item.span,
|
item.span,
|
||||||
"consider using the uninhabited type `!` or a wrapper around it",
|
"consider using the uninhabited type `!` (never type) or a wrapper \
|
||||||
|
around it to introduce a type which can't be instantiated",
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ LL | enum Empty {}
|
|||||||
| ^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: `-D clippy::empty-enum` implied by `-D warnings`
|
= note: `-D clippy::empty-enum` implied by `-D warnings`
|
||||||
help: consider using the uninhabited type `!` or a wrapper around it
|
help: consider using the uninhabited type `!` (never type) or a wrapper around it to introduce a type which can't be instantiated
|
||||||
--> $DIR/empty_enum.rs:4:1
|
--> $DIR/empty_enum.rs:4:1
|
||||||
|
|
|
|
||||||
LL | enum Empty {}
|
LL | enum Empty {}
|
||||||
|
|||||||
Reference in New Issue
Block a user