Auto merge of #5087 - Areredify:issue-4905, r=phansch

improve `empty_enum` documentation

closes #4905
changelog: improve `empty_enum` help message and documentation.
This commit is contained in:
bors 2020-01-24 22:30:07 +00:00
commit 87597b5a42
2 changed files with 19 additions and 5 deletions

View File

@ -8,16 +8,29 @@
declare_clippy_lint! {
/// **What it does:** Checks for `enum`s with no variants.
///
/// **Why is this bad?** Enum's with no variants should be replaced with `!`,
/// the uninhabited type,
/// or a wrapper around it.
/// **Why is this bad?** If you want to introduce a type which
/// can't be instantiated, you should use `!` (the never type),
/// 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.
///
/// **Example:**
///
/// Bad:
/// ```rust
/// enum Test {}
/// ```
///
/// Good:
/// ```rust
/// #![feature(never_type)]
///
/// struct Test(!);
/// ```
pub EMPTY_ENUM,
pedantic,
"enum with no variants"
@ -35,7 +48,8 @@ fn check_item(&mut self, cx: &LateContext<'_, '_>, item: &Item<'_>) {
span_lint_and_then(cx, EMPTY_ENUM, item.span, "enum with no variants", |db| {
db.span_help(
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",
);
});
}

View File

@ -5,7 +5,7 @@ LL | enum Empty {}
| ^^^^^^^^^^^^^
|
= 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
|
LL | enum Empty {}