Rollup merge of #102954 - GuillaumeGomez:cfg-hide-attr-checks, r=Manishearth
Add missing checks for `doc(cfg_hide(...))` Part of #43781. The `doc(cfg_hide(...))` attribute can only be used at the crate level and takes a list of attributes as argument. r? ```@Manishearth```
This commit is contained in:
commit
59e0af68ab
5 changed files with 81 additions and 0 deletions
|
@ -934,6 +934,22 @@ impl CheckAttrVisitor<'_> {
|
|||
is_valid
|
||||
}
|
||||
|
||||
/// Check that the `#![doc(cfg_hide(...))]` attribute only contains a list of attributes.
|
||||
/// Returns `true` if valid.
|
||||
fn check_doc_cfg_hide(&self, meta: &NestedMetaItem, hir_id: HirId) -> bool {
|
||||
if meta.meta_item_list().is_some() {
|
||||
true
|
||||
} else {
|
||||
self.tcx.emit_spanned_lint(
|
||||
INVALID_DOC_ATTRIBUTES,
|
||||
hir_id,
|
||||
meta.span(),
|
||||
errors::DocCfgHideTakesList,
|
||||
);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
/// Runs various checks on `#[doc]` attributes. Returns `true` if valid.
|
||||
///
|
||||
/// `specified_inline` should be initialized to `None` and kept for the scope
|
||||
|
@ -987,6 +1003,13 @@ impl CheckAttrVisitor<'_> {
|
|||
is_valid = false;
|
||||
}
|
||||
|
||||
sym::cfg_hide
|
||||
if !self.check_attr_crate_level(attr, meta, hir_id)
|
||||
|| !self.check_doc_cfg_hide(meta, hir_id) =>
|
||||
{
|
||||
is_valid = false;
|
||||
}
|
||||
|
||||
sym::inline | sym::no_inline
|
||||
if !self.check_doc_inline(
|
||||
attr,
|
||||
|
|
|
@ -271,6 +271,10 @@ pub struct DocTestUnknown {
|
|||
#[diag(passes::doc_test_takes_list)]
|
||||
pub struct DocTestTakesList;
|
||||
|
||||
#[derive(LintDiagnostic)]
|
||||
#[diag(passes::doc_cfg_hide_takes_list)]
|
||||
pub struct DocCfgHideTakesList;
|
||||
|
||||
#[derive(LintDiagnostic)]
|
||||
#[diag(passes::doc_primitive)]
|
||||
pub struct DocPrimitive;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue