about summary refs log tree commit diff
diff options
context:
space:
mode:
authordaxpedda <daxpedda@users.noreply.github.com>2019-03-14 18:32:39 +0100
committerdaxpedda <daxpedda@users.noreply.github.com>2019-03-14 18:32:39 +0100
commit177b3b27c46cddeb6f80bfebabe1a70328c1a9fc (patch)
tree518685832b16f0bee1dd19fe4c01aa1cd9eff966
parent729892961c9e3b00919fd13d7ea2a704d03dd6a8 (diff)
downloadrust-177b3b27c46cddeb6f80bfebabe1a70328c1a9fc.tar.gz
rust-177b3b27c46cddeb6f80bfebabe1a70328c1a9fc.zip
Add `doc(include = ...)` detection to `missing_docs_in_private_items`
-rw-r--r--clippy_lints/src/missing_doc.rs23
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,