diff options
| author | y21 <30553356+y21@users.noreply.github.com> | 2024-10-20 23:42:28 +0200 |
|---|---|---|
| committer | y21 <30553356+y21@users.noreply.github.com> | 2024-10-20 23:42:28 +0200 |
| commit | b3bf128e545213b8e101b9584acc84de9ece22d8 (patch) | |
| tree | a468401eecf4c2bf194102571b3748372b0b691b | |
| parent | 2f71ce665178b08b5bea3a3e8401c75e67d57e51 (diff) | |
| download | rust-b3bf128e545213b8e101b9584acc84de9ece22d8.tar.gz rust-b3bf128e545213b8e101b9584acc84de9ece22d8.zip | |
don't lint nested items that don't have generated documentation in `missing_docs_in_private_items`
| -rw-r--r-- | clippy_lints/src/missing_doc.rs | 16 | ||||
| -rw-r--r-- | tests/ui/missing_doc.rs | 5 | ||||
| -rw-r--r-- | tests/ui/missing_doc.stderr | 11 |
3 files changed, 31 insertions, 1 deletions
diff --git a/clippy_lints/src/missing_doc.rs b/clippy_lints/src/missing_doc.rs index cff27681c95..1300c7d1062 100644 --- a/clippy_lints/src/missing_doc.rs +++ b/clippy_lints/src/missing_doc.rs @@ -12,6 +12,7 @@ use clippy_utils::is_from_proc_macro; use clippy_utils::source::SpanRangeExt; use rustc_ast::ast::{self, MetaItem, MetaItemKind}; use rustc_hir as hir; +use rustc_hir::def::DefKind; use rustc_hir::def_id::LocalDefId; use rustc_lint::{LateContext, LateLintPass, LintContext}; use rustc_middle::ty::Visibility; @@ -111,6 +112,21 @@ impl MissingDoc { return; } + if let Some(parent_def_id) = cx.tcx.opt_parent(def_id.to_def_id()) + && let DefKind::AnonConst + | DefKind::AssocConst + | DefKind::AssocFn + | DefKind::Closure + | DefKind::Const + | DefKind::Fn + | DefKind::InlineConst + | DefKind::Static { .. } + | DefKind::SyntheticCoroutineBody = cx.tcx.def_kind(parent_def_id) + { + // Nested item has no generated documentation, so it doesn't need to be documented. + return; + } + let has_doc = attrs .iter() .any(|a| a.doc_str().is_some() || Self::has_include(a.meta())) diff --git a/tests/ui/missing_doc.rs b/tests/ui/missing_doc.rs index a8fcbefcc0e..31bc4309582 100644 --- a/tests/ui/missing_doc.rs +++ b/tests/ui/missing_doc.rs @@ -119,6 +119,11 @@ with_span!(span pub const FOO2_PM: u32 = 0;); // Don't lint unnamed constants const _: () = (); +fn issue13298() { + // Rustdoc doesn't generate documentation for items within other items like fns or consts + const MSG: &str = "Hello, world!"; +} + // issue #12197 // Undocumented field originated inside of spanned proc-macro attribute /// Some dox for struct. diff --git a/tests/ui/missing_doc.stderr b/tests/ui/missing_doc.stderr index ef0f96a5b71..133c76ac9d4 100644 --- a/tests/ui/missing_doc.stderr +++ b/tests/ui/missing_doc.stderr @@ -88,5 +88,14 @@ error: missing documentation for a function LL | fn also_undocumented2() {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: aborting due to 13 previous errors +error: missing documentation for a function + --> tests/ui/missing_doc.rs:122:1 + | +LL | / fn issue13298() { +LL | | // Rustdoc doesn't generate documentation for items within other items like fns or consts +LL | | const MSG: &str = "Hello, world!"; +LL | | } + | |_^ + +error: aborting due to 14 previous errors |
