X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=clippy_lints%2Fsrc%2Fmanual_non_exhaustive.rs;h=7d4f0b021120547c820533448ec80d0346d7f328;hb=0f6932a1f7623663e50922225ea304340949c051;hp=99564a5c005b21c76f99afdf180b0e17f6861257;hpb=aa033440da1215a6955fa89c2f71593143144b92;p=rust.git diff --git a/clippy_lints/src/manual_non_exhaustive.rs b/clippy_lints/src/manual_non_exhaustive.rs index 99564a5c005..7d4f0b02112 100644 --- a/clippy_lints/src/manual_non_exhaustive.rs +++ b/clippy_lints/src/manual_non_exhaustive.rs @@ -1,7 +1,6 @@ -use clippy_utils::attrs::is_doc_hidden; -use clippy_utils::diagnostics::span_lint_and_then; +use clippy_utils::diagnostics::{span_lint_and_then, span_lint_hir_and_then}; use clippy_utils::source::snippet_opt; -use clippy_utils::{is_lint_allowed, meets_msrv, msrvs}; +use clippy_utils::{is_doc_hidden, meets_msrv, msrvs}; use rustc_ast::ast::{self, VisibilityKind}; use rustc_data_structures::fx::FxHashSet; use rustc_errors::Applicability; @@ -114,7 +113,7 @@ fn check_item(&mut self, cx: &EarlyContext<'_>, item: &ast::Item) { let mut iter = fields.iter().filter_map(|f| match f.vis.kind { VisibilityKind::Public => None, VisibilityKind::Inherited => Some(Ok(f)), - _ => Some(Err(())), + VisibilityKind::Restricted { .. } => Some(Err(())), }); if let Some(Ok(field)) = iter.next() && iter.next().is_none() @@ -134,7 +133,7 @@ fn check_item(&mut self, cx: &EarlyContext<'_>, item: &ast::Item) { diag.span_suggestion( header_span, "add the attribute", - format!("#[non_exhaustive] {}", snippet), + format!("#[non_exhaustive] {snippet}"), Applicability::Unspecified, ); } @@ -161,8 +160,8 @@ fn check_item(&mut self, cx: &LateContext<'tcx>, item: &'tcx hir::Item<'_>) { let id = cx.tcx.hir().local_def_id(v.id); (matches!(v.data, hir::VariantData::Unit(_)) && v.ident.as_str().starts_with('_') - && is_doc_hidden(cx.tcx.get_attrs(id.to_def_id()))) - .then(|| (id, v.span)) + && is_doc_hidden(cx.tcx.hir().attrs(v.id))) + .then_some((id, v.span)) }); if let Some((id, span)) = iter.next() && iter.next().is_none() @@ -191,12 +190,13 @@ fn check_crate_post(&mut self, cx: &LateContext<'tcx>) { !self .constructed_enum_variants .contains(&(enum_id.to_def_id(), variant_id.to_def_id())) - && !is_lint_allowed(cx, MANUAL_NON_EXHAUSTIVE, cx.tcx.hir().local_def_id_to_hir_id(enum_id)) }) { - span_lint_and_then( + let hir_id = cx.tcx.hir().local_def_id_to_hir_id(enum_id); + span_lint_hir_and_then( cx, MANUAL_NON_EXHAUSTIVE, + hir_id, enum_span, "this seems like a manual implementation of the non-exhaustive pattern", |diag| { @@ -207,7 +207,7 @@ fn check_crate_post(&mut self, cx: &LateContext<'tcx>) { diag.span_suggestion( header_span, "add the attribute", - format!("#[non_exhaustive] {}", snippet), + format!("#[non_exhaustive] {snippet}"), Applicability::Unspecified, ); }