Skip to content

Commit e780641

Browse files
committed
Auto merge of #3883 - daxpedda:missing_docs_in_private_items, r=phansch
Add `doc(include = ...)` detection to `missing_docs_in_private_items` The whole `missing documentation in crate` part doesn't have any tests. If I should add test cases tell me.
2 parents bb41b16 + 9061fd3 commit e780641

File tree

5 files changed

+39
-2
lines changed

5 files changed

+39
-2
lines changed

clippy_lints/src/missing_doc.rs

+19-2
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66
//
77

88
use crate::utils::{in_macro, span_lint};
9+
use if_chain::if_chain;
910
use rustc::hir;
1011
use rustc::lint::{LateContext, LateLintPass, LintArray, LintContext, LintPass};
1112
use rustc::ty;
1213
use rustc::{declare_tool_lint, lint_array};
13-
use syntax::ast;
14+
use syntax::ast::{self, MetaItem, MetaItemKind};
1415
use syntax::attr;
1516
use syntax::source_map::Span;
1617

@@ -52,6 +53,20 @@ impl MissingDoc {
5253
*self.doc_hidden_stack.last().expect("empty doc_hidden_stack")
5354
}
5455

56+
fn has_include(meta: Option<MetaItem>) -> bool {
57+
if_chain! {
58+
if let Some(meta) = meta;
59+
if let MetaItemKind::List(list) = meta.node;
60+
if let Some(meta) = list.get(0);
61+
if let Some(name) = meta.name();
62+
then {
63+
name == "include"
64+
} else {
65+
false
66+
}
67+
}
68+
}
69+
5570
fn check_missing_docs_attrs(
5671
&self,
5772
cx: &LateContext<'_, '_>,
@@ -74,7 +89,9 @@ impl MissingDoc {
7489
return;
7590
}
7691

77-
let has_doc = attrs.iter().any(|a| a.is_value_str() && a.name() == "doc");
92+
let has_doc = attrs
93+
.iter()
94+
.any(|a| a.name() == "doc" && (a.is_value_str() || Self::has_include(a.meta())));
7895
if !has_doc {
7996
span_lint(
8097
cx,

tests/ui/missing-doc-crate-missing.rs

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#![warn(clippy::missing_docs_in_private_items)]
2+
3+
fn main() {}
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
error: missing documentation for crate
2+
--> $DIR/missing-doc-crate-missing.rs:1:1
3+
|
4+
LL | / #![warn(clippy::missing_docs_in_private_items)]
5+
LL | |
6+
LL | | fn main() {}
7+
| |____________^
8+
|
9+
= note: `-D clippy::missing-docs-in-private-items` implied by `-D warnings`
10+
11+
error: aborting due to previous error
12+

tests/ui/missing-doc-crate.rs

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#![warn(clippy::missing_docs_in_private_items)]
2+
#![feature(external_doc)]
3+
#![doc(include = "../../README.md")]
4+
5+
fn main() {}

tests/ui/missing-doc-crate.stderr

Whitespace-only changes.

0 commit comments

Comments
 (0)