delete whitelist and add checks to check_item() for missing_docs

add test and bless
This commit is contained in:
James Dietz 2023-05-03 13:37:37 -04:00
parent 31a4f2da57
commit fd005b06bb
3 changed files with 39 additions and 49 deletions

View File

@ -547,32 +547,13 @@ fn check_crate(&mut self, cx: &LateContext<'_>) {
} }
fn check_item(&mut self, cx: &LateContext<'_>, it: &hir::Item<'_>) { fn check_item(&mut self, cx: &LateContext<'_>, it: &hir::Item<'_>) {
match it.kind { // Previously the Impl and Use types have been excluded from missing docs,
hir::ItemKind::Trait(..) => { // so we will continue to exclude them for compatibility
// Issue #11592: traits are always considered exported, even when private. if let hir::ItemKind::Impl(..) | hir::ItemKind::Use(..) = it.kind {
if cx.tcx.visibility(it.owner_id) return;
== ty::Visibility::Restricted( }
cx.tcx.parent_module_from_def_id(it.owner_id.def_id).to_def_id(),
)
{
return;
}
}
hir::ItemKind::TyAlias(..)
| hir::ItemKind::Fn(..)
| hir::ItemKind::Macro(..)
| hir::ItemKind::Mod(..)
| hir::ItemKind::Enum(..)
| hir::ItemKind::Struct(..)
| hir::ItemKind::Union(..)
| hir::ItemKind::Const(..)
| hir::ItemKind::Static(..) => {}
_ => return,
};
let (article, desc) = cx.tcx.article_and_description(it.owner_id.to_def_id()); let (article, desc) = cx.tcx.article_and_description(it.owner_id.to_def_id());
self.check_missing_docs_attrs(cx, it.owner_id.def_id, article, desc); self.check_missing_docs_attrs(cx, it.owner_id.def_id, article, desc);
} }

View File

@ -3,6 +3,7 @@
#![deny(missing_docs)] #![deny(missing_docs)]
#![allow(dead_code)] #![allow(dead_code)]
#![feature(associated_type_defaults, extern_types)] #![feature(associated_type_defaults, extern_types)]
#![feature(trait_alias)]
//! Some garbage docs for the crate here //! Some garbage docs for the crate here
#![doc="More garbage"] #![doc="More garbage"]
@ -202,4 +203,6 @@ pub mod public_interface {
//~^ ERROR: missing documentation for a foreign type //~^ ERROR: missing documentation for a foreign type
} }
pub trait T = Sync; //~ ERROR: missing documentation for a trait alias
fn main() {} fn main() {}

View File

@ -1,5 +1,5 @@
error: missing documentation for a type alias error: missing documentation for a type alias
--> $DIR/lint-missing-doc.rs:11:1 --> $DIR/lint-missing-doc.rs:12:1
| |
LL | pub type PubTypedef = String; LL | pub type PubTypedef = String;
| ^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^
@ -11,142 +11,148 @@ LL | #![deny(missing_docs)]
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: missing documentation for a struct error: missing documentation for a struct
--> $DIR/lint-missing-doc.rs:18:1 --> $DIR/lint-missing-doc.rs:19:1
| |
LL | pub struct PubFoo { LL | pub struct PubFoo {
| ^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^
error: missing documentation for a struct field error: missing documentation for a struct field
--> $DIR/lint-missing-doc.rs:19:5 --> $DIR/lint-missing-doc.rs:20:5
| |
LL | pub a: isize, LL | pub a: isize,
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: missing documentation for a module error: missing documentation for a module
--> $DIR/lint-missing-doc.rs:30:1 --> $DIR/lint-missing-doc.rs:31:1
| |
LL | pub mod pub_module_no_dox {} LL | pub mod pub_module_no_dox {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^
error: missing documentation for a function error: missing documentation for a function
--> $DIR/lint-missing-doc.rs:34:1 --> $DIR/lint-missing-doc.rs:35:1
| |
LL | pub fn foo2() {} LL | pub fn foo2() {}
| ^^^^^^^^^^^^^ | ^^^^^^^^^^^^^
error: missing documentation for a trait error: missing documentation for a trait
--> $DIR/lint-missing-doc.rs:52:1 --> $DIR/lint-missing-doc.rs:53:1
| |
LL | pub trait C { LL | pub trait C {
| ^^^^^^^^^^^ | ^^^^^^^^^^^
error: missing documentation for a method error: missing documentation for a method
--> $DIR/lint-missing-doc.rs:53:5 --> $DIR/lint-missing-doc.rs:54:5
| |
LL | fn foo(&self); LL | fn foo(&self);
| ^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^
error: missing documentation for a method error: missing documentation for a method
--> $DIR/lint-missing-doc.rs:54:5 --> $DIR/lint-missing-doc.rs:55:5
| |
LL | fn foo_with_impl(&self) {} LL | fn foo_with_impl(&self) {}
| ^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^
error: missing documentation for an associated function error: missing documentation for an associated function
--> $DIR/lint-missing-doc.rs:55:5 --> $DIR/lint-missing-doc.rs:56:5
| |
LL | fn foo_no_self(); LL | fn foo_no_self();
| ^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^
error: missing documentation for an associated function error: missing documentation for an associated function
--> $DIR/lint-missing-doc.rs:56:5 --> $DIR/lint-missing-doc.rs:57:5
| |
LL | fn foo_no_self_with_impl() {} LL | fn foo_no_self_with_impl() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^
error: missing documentation for an associated type error: missing documentation for an associated type
--> $DIR/lint-missing-doc.rs:66:5 --> $DIR/lint-missing-doc.rs:67:5
| |
LL | type AssociatedType; LL | type AssociatedType;
| ^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^
error: missing documentation for an associated type error: missing documentation for an associated type
--> $DIR/lint-missing-doc.rs:67:5 --> $DIR/lint-missing-doc.rs:68:5
| |
LL | type AssociatedTypeDef = Self; LL | type AssociatedTypeDef = Self;
| ^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^
error: missing documentation for an associated function error: missing documentation for an associated function
--> $DIR/lint-missing-doc.rs:83:5 --> $DIR/lint-missing-doc.rs:84:5
| |
LL | pub fn foo() {} LL | pub fn foo() {}
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
error: missing documentation for an enum error: missing documentation for an enum
--> $DIR/lint-missing-doc.rs:120:1 --> $DIR/lint-missing-doc.rs:121:1
| |
LL | pub enum PubBaz { LL | pub enum PubBaz {
| ^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^
error: missing documentation for a variant error: missing documentation for a variant
--> $DIR/lint-missing-doc.rs:121:5 --> $DIR/lint-missing-doc.rs:122:5
| |
LL | PubBazA { LL | PubBazA {
| ^^^^^^^ | ^^^^^^^
error: missing documentation for a struct field error: missing documentation for a struct field
--> $DIR/lint-missing-doc.rs:122:9 --> $DIR/lint-missing-doc.rs:123:9
| |
LL | a: isize, LL | a: isize,
| ^^^^^^^^ | ^^^^^^^^
error: missing documentation for a constant error: missing documentation for a constant
--> $DIR/lint-missing-doc.rs:153:1 --> $DIR/lint-missing-doc.rs:154:1
| |
LL | pub const FOO4: u32 = 0; LL | pub const FOO4: u32 = 0;
| ^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^
error: missing documentation for a static error: missing documentation for a static
--> $DIR/lint-missing-doc.rs:163:1 --> $DIR/lint-missing-doc.rs:164:1
| |
LL | pub static BAR4: u32 = 0; LL | pub static BAR4: u32 = 0;
| ^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^
error: missing documentation for a function error: missing documentation for a function
--> $DIR/lint-missing-doc.rs:169:5 --> $DIR/lint-missing-doc.rs:170:5
| |
LL | pub fn undocumented1() {} LL | pub fn undocumented1() {}
| ^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^
error: missing documentation for a function error: missing documentation for a function
--> $DIR/lint-missing-doc.rs:170:5 --> $DIR/lint-missing-doc.rs:171:5
| |
LL | pub fn undocumented2() {} LL | pub fn undocumented2() {}
| ^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^
error: missing documentation for a function error: missing documentation for a function
--> $DIR/lint-missing-doc.rs:176:9 --> $DIR/lint-missing-doc.rs:177:9
| |
LL | pub fn also_undocumented1() {} LL | pub fn also_undocumented1() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: missing documentation for a function error: missing documentation for a function
--> $DIR/lint-missing-doc.rs:191:5 --> $DIR/lint-missing-doc.rs:192:5
| |
LL | pub fn extern_fn_undocumented(f: f32) -> f32; LL | pub fn extern_fn_undocumented(f: f32) -> f32;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: missing documentation for a static error: missing documentation for a static
--> $DIR/lint-missing-doc.rs:196:5 --> $DIR/lint-missing-doc.rs:197:5
| |
LL | pub static EXTERN_STATIC_UNDOCUMENTED: u8; LL | pub static EXTERN_STATIC_UNDOCUMENTED: u8;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: missing documentation for a foreign type error: missing documentation for a foreign type
--> $DIR/lint-missing-doc.rs:201:5 --> $DIR/lint-missing-doc.rs:202:5
| |
LL | pub type ExternTyUndocumented; LL | pub type ExternTyUndocumented;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 24 previous errors error: missing documentation for a trait alias
--> $DIR/lint-missing-doc.rs:206:1
|
LL | pub trait T = Sync;
| ^^^^^^^^^^^
error: aborting due to 25 previous errors