diff options
| author | Jason Newcomb <jsnewcomb@pm.me> | 2024-06-09 22:32:55 -0400 |
|---|---|---|
| committer | Jason Newcomb <jsnewcomb@pm.me> | 2024-07-05 03:10:07 -0400 |
| commit | 672b8b512a7c5bd6c30091647a637cfede97f8aa (patch) | |
| tree | 89c19fe1c93dc6e2655742413665475b44b0ac39 | |
| parent | d1dcd918e72e62bbf81c01c1b4cebaf1d9a4eb6f (diff) | |
| download | rust-672b8b512a7c5bd6c30091647a637cfede97f8aa.tar.gz rust-672b8b512a7c5bd6c30091647a637cfede97f8aa.zip | |
Refactor `empty_enums`: Check the HIR tree before the feature check.
| -rw-r--r-- | clippy_lints/src/empty_enum.rs | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/clippy_lints/src/empty_enum.rs b/clippy_lints/src/empty_enum.rs index d16714695cb..1869faab1d3 100644 --- a/clippy_lints/src/empty_enum.rs +++ b/clippy_lints/src/empty_enum.rs @@ -64,25 +64,21 @@ declare_lint_pass!(EmptyEnum => [EMPTY_ENUM]); impl<'tcx> LateLintPass<'tcx> for EmptyEnum { fn check_item(&mut self, cx: &LateContext<'_>, item: &Item<'_>) { - // Only suggest the `never_type` if the feature is enabled - if !cx.tcx.features().never_type { - return; - } - - if let ItemKind::Enum(..) = item.kind { - let ty = cx.tcx.type_of(item.owner_id).instantiate_identity(); - let adt = ty.ty_adt_def().expect("already checked whether this is an enum"); - if adt.variants().is_empty() { - span_lint_and_help( - cx, - EMPTY_ENUM, - item.span, - "enum with no variants", - None, - "consider using the uninhabited type `!` (never type) or a wrapper \ - around it to introduce a type which can't be instantiated", - ); - } + if let ItemKind::Enum(..) = item.kind + // Only suggest the `never_type` if the feature is enabled + && cx.tcx.features().never_type + && let Some(adt) = cx.tcx.type_of(item.owner_id).instantiate_identity().ty_adt_def() + && adt.variants().is_empty() + { + span_lint_and_help( + cx, + EMPTY_ENUM, + item.span, + "enum with no variants", + None, + "consider using the uninhabited type `!` (never type) or a wrapper \ + around it to introduce a type which can't be instantiated", + ); } } } |
