diff options
| author | daxpedda <daxpedda@users.noreply.github.com> | 2019-03-14 18:32:39 +0100 |
|---|---|---|
| committer | daxpedda <daxpedda@users.noreply.github.com> | 2019-03-14 18:32:39 +0100 |
| commit | 177b3b27c46cddeb6f80bfebabe1a70328c1a9fc (patch) | |
| tree | 518685832b16f0bee1dd19fe4c01aa1cd9eff966 | |
| parent | 729892961c9e3b00919fd13d7ea2a704d03dd6a8 (diff) | |
| download | rust-177b3b27c46cddeb6f80bfebabe1a70328c1a9fc.tar.gz rust-177b3b27c46cddeb6f80bfebabe1a70328c1a9fc.zip | |
Add `doc(include = ...)` detection to `missing_docs_in_private_items`
| -rw-r--r-- | clippy_lints/src/missing_doc.rs | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/clippy_lints/src/missing_doc.rs b/clippy_lints/src/missing_doc.rs index d7e4dd22123..5c3fa68620c 100644 --- a/clippy_lints/src/missing_doc.rs +++ b/clippy_lints/src/missing_doc.rs @@ -6,11 +6,12 @@ // use crate::utils::{in_macro, span_lint}; +use if_chain::if_chain; use rustc::hir; use rustc::lint::{LateContext, LateLintPass, LintArray, LintContext, LintPass}; use rustc::ty; use rustc::{declare_tool_lint, lint_array}; -use syntax::ast; +use syntax::ast::{self, MetaItem, MetaItemKind}; use syntax::attr; use syntax::source_map::Span; @@ -52,6 +53,22 @@ impl MissingDoc { *self.doc_hidden_stack.last().expect("empty doc_hidden_stack") } + #[allow(clippy::needless_bool)] + fn has_include(meta: Option<MetaItem>) -> bool { + if_chain! { + if let Some(meta) = meta; + if let MetaItemKind::List(list) = meta.node; + if let Some(meta) = list.get(0); + if let Some(name) = meta.name(); + if name == "include"; + then { + true + } else { + false + } + } + } + fn check_missing_docs_attrs( &self, cx: &LateContext<'_, '_>, @@ -74,7 +91,9 @@ impl MissingDoc { return; } - let has_doc = attrs.iter().any(|a| a.is_value_str() && a.name() == "doc"); + let has_doc = attrs + .iter() + .any(|a| a.name() == "doc" && (a.is_value_str() || Self::has_include(a.meta()))); if !has_doc { span_lint( cx, |
