diff options
| author | Yuki Okushi <jtitor@2k36.org> | 2022-06-22 07:04:04 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-22 07:04:04 +0900 |
| commit | b887da1cb27ef90c9c54c5a9d005e3be3d866dc8 (patch) | |
| tree | ef26cdacf86d5ccec719961d284ac73dc0024103 /compiler | |
| parent | 880ac7c51e564033220457d32e8d85c71d3de086 (diff) | |
| parent | 67508f3714296ffb0cf9820e1c1ba46b082227a3 (diff) | |
| download | rust-b887da1cb27ef90c9c54c5a9d005e3be3d866dc8.tar.gz rust-b887da1cb27ef90c9c54c5a9d005e3be3d866dc8.zip | |
Rollup merge of #98336 - fmease:remove-faulty-doc-hidden-lint, r=GuillaumeGomez
Remove the unused-`#[doc(hidden)]` logic from the `unused_attributes` lint Fixes #96890. It was found out that `#[doc(hidden)]` on trait impl items does indeed have an effect on the generated documentation (see the linked issue). In my opinion and the one of [others](https://rust-lang.zulipchat.com/#narrow/stream/266220-rustdoc/topic/Validy.20checks.20for.20.60.23.5Bdoc.28hidden.29.5D.60/near/281846219), rustdoc's output is actually a bit flawed in that regard but that should be tracked in a new issue I suppose (I will open an issue for that in the near future). The check was introduced in #96008 which is marked to be part of version `1.62` (current `beta`). As far as I understand, this means that **this PR needs to be backported** to `beta` to fix #96890 on time. Correct me if I am wrong. CC `@dtolnay` (in case you would like to agree or disagree with my decision to fully remove this check) `@rustbot` label A-lint T-compiler T-rustdoc r? `@rust-lang/compiler`
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_passes/src/check_attr.rs | 76 |
1 files changed, 2 insertions, 74 deletions
diff --git a/compiler/rustc_passes/src/check_attr.rs b/compiler/rustc_passes/src/check_attr.rs index 4ef0f590a1f..536d45b2399 100644 --- a/compiler/rustc_passes/src/check_attr.rs +++ b/compiler/rustc_passes/src/check_attr.rs @@ -4,8 +4,7 @@ //! conflicts between multiple such attributes attached to the same //! item. -use rustc_ast::tokenstream::DelimSpan; -use rustc_ast::{ast, AttrStyle, Attribute, Lit, LitKind, MacArgs, MetaItemKind, NestedMetaItem}; +use rustc_ast::{ast, AttrStyle, Attribute, Lit, LitKind, MetaItemKind, NestedMetaItem}; use rustc_data_structures::fx::FxHashMap; use rustc_errors::{pluralize, struct_span_err, Applicability, MultiSpan}; use rustc_expand::base::resolve_path; @@ -899,68 +898,6 @@ impl CheckAttrVisitor<'_> { } } - /// Checks `#[doc(hidden)]` attributes. Returns `true` if valid. - fn check_doc_hidden( - &self, - attr: &Attribute, - meta_index: usize, - meta: &NestedMetaItem, - hir_id: HirId, - target: Target, - ) -> bool { - if let Target::AssocConst - | Target::AssocTy - | Target::Method(MethodKind::Trait { body: true }) = target - { - let parent_hir_id = self.tcx.hir().get_parent_item(hir_id); - let containing_item = self.tcx.hir().expect_item(parent_hir_id); - - if let hir::ItemKind::Impl(hir::Impl { of_trait: Some(_), .. }) = containing_item.kind { - let meta_items = attr.meta_item_list().unwrap(); - - let (span, replacement_span) = if meta_items.len() == 1 { - (attr.span, attr.span) - } else { - let meta_span = meta.span(); - ( - meta_span, - meta_span.until(match meta_items.get(meta_index + 1) { - Some(next_item) => next_item.span(), - None => match attr.get_normal_item().args { - MacArgs::Delimited(DelimSpan { close, .. }, ..) => close, - _ => unreachable!(), - }, - }), - ) - }; - - // FIXME: #[doc(hidden)] was previously erroneously allowed on trait impl items, - // so for backward compatibility only emit a warning and do not mark it as invalid. - self.tcx.struct_span_lint_hir(UNUSED_ATTRIBUTES, hir_id, span, |lint| { - lint.build("`#[doc(hidden)]` is ignored on trait impl items") - .warn( - "this was previously accepted by the compiler but is \ - being phased out; it will become a hard error in \ - a future release!", - ) - .note( - "whether the impl item is `doc(hidden)` or not \ - entirely depends on the corresponding trait item", - ) - .span_suggestion( - replacement_span, - "remove this attribute", - "", - Applicability::MachineApplicable, - ) - .emit(); - }); - } - } - - true - } - /// Checks that an attribute is *not* used at the crate level. Returns `true` if valid. fn check_attr_not_crate_level( &self, @@ -1079,7 +1016,7 @@ impl CheckAttrVisitor<'_> { let mut is_valid = true; if let Some(mi) = attr.meta() && let Some(list) = mi.meta_item_list() { - for (meta_index, meta) in list.into_iter().enumerate() { + for meta in list { if let Some(i_meta) = meta.meta_item() { match i_meta.name_or_empty() { sym::alias @@ -1127,15 +1064,6 @@ impl CheckAttrVisitor<'_> { is_valid = false; } - sym::hidden if !self.check_doc_hidden(attr, - meta_index, - meta, - hir_id, - target, - ) => { - is_valid = false; - } - // no_default_passes: deprecated // passes: deprecated // plugins: removed, but rustdoc warns about it itself |
