Skip to content

Commit 61115cd

Browse files
authored
Rollup merge of #111150 - mj10021:issue-111025-fix, r=petrochenkov
added TraitAlias to check_item() for missing_docs As in issue #111025 the `missing_docs` was not being triggered for trait aliases. I added `TraitAlias` to the pattern match for check_item(), and the lint seems to be behaving appropriately
2 parents aef008a + fd005b0 commit 61115cd

File tree

3 files changed

+39
-49
lines changed

3 files changed

+39
-49
lines changed

compiler/rustc_lint/src/builtin.rs

+5-24
Original file line numberDiff line numberDiff line change
@@ -547,32 +547,13 @@ impl<'tcx> LateLintPass<'tcx> for MissingDoc {
547547
}
548548

549549
fn check_item(&mut self, cx: &LateContext<'_>, it: &hir::Item<'_>) {
550-
match it.kind {
551-
hir::ItemKind::Trait(..) => {
552-
// Issue #11592: traits are always considered exported, even when private.
553-
if cx.tcx.visibility(it.owner_id)
554-
== ty::Visibility::Restricted(
555-
cx.tcx.parent_module_from_def_id(it.owner_id.def_id).to_def_id(),
556-
)
557-
{
558-
return;
559-
}
560-
}
561-
hir::ItemKind::TyAlias(..)
562-
| hir::ItemKind::Fn(..)
563-
| hir::ItemKind::Macro(..)
564-
| hir::ItemKind::Mod(..)
565-
| hir::ItemKind::Enum(..)
566-
| hir::ItemKind::Struct(..)
567-
| hir::ItemKind::Union(..)
568-
| hir::ItemKind::Const(..)
569-
| hir::ItemKind::Static(..) => {}
570-
571-
_ => return,
572-
};
550+
// Previously the Impl and Use types have been excluded from missing docs,
551+
// so we will continue to exclude them for compatibility
552+
if let hir::ItemKind::Impl(..) | hir::ItemKind::Use(..) = it.kind {
553+
return;
554+
}
573555

574556
let (article, desc) = cx.tcx.article_and_description(it.owner_id.to_def_id());
575-
576557
self.check_missing_docs_attrs(cx, it.owner_id.def_id, article, desc);
577558
}
578559

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

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#![deny(missing_docs)]
44
#![allow(dead_code)]
55
#![feature(associated_type_defaults, extern_types)]
6+
#![feature(trait_alias)]
67

78
//! Some garbage docs for the crate here
89
#![doc="More garbage"]
@@ -202,4 +203,6 @@ extern "C" {
202203
//~^ ERROR: missing documentation for a foreign type
203204
}
204205

206+
pub trait T = Sync; //~ ERROR: missing documentation for a trait alias
207+
205208
fn main() {}

tests/ui/lint/lint-missing-doc.stderr

+31-25
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error: missing documentation for a type alias
2-
--> $DIR/lint-missing-doc.rs:11:1
2+
--> $DIR/lint-missing-doc.rs:12:1
33
|
44
LL | pub type PubTypedef = String;
55
| ^^^^^^^^^^^^^^^^^^^
@@ -11,142 +11,148 @@ LL | #![deny(missing_docs)]
1111
| ^^^^^^^^^^^^
1212

1313
error: missing documentation for a struct
14-
--> $DIR/lint-missing-doc.rs:18:1
14+
--> $DIR/lint-missing-doc.rs:19:1
1515
|
1616
LL | pub struct PubFoo {
1717
| ^^^^^^^^^^^^^^^^^
1818

1919
error: missing documentation for a struct field
20-
--> $DIR/lint-missing-doc.rs:19:5
20+
--> $DIR/lint-missing-doc.rs:20:5
2121
|
2222
LL | pub a: isize,
2323
| ^^^^^^^^^^^^
2424

2525
error: missing documentation for a module
26-
--> $DIR/lint-missing-doc.rs:30:1
26+
--> $DIR/lint-missing-doc.rs:31:1
2727
|
2828
LL | pub mod pub_module_no_dox {}
2929
| ^^^^^^^^^^^^^^^^^^^^^^^^^
3030

3131
error: missing documentation for a function
32-
--> $DIR/lint-missing-doc.rs:34:1
32+
--> $DIR/lint-missing-doc.rs:35:1
3333
|
3434
LL | pub fn foo2() {}
3535
| ^^^^^^^^^^^^^
3636

3737
error: missing documentation for a trait
38-
--> $DIR/lint-missing-doc.rs:52:1
38+
--> $DIR/lint-missing-doc.rs:53:1
3939
|
4040
LL | pub trait C {
4141
| ^^^^^^^^^^^
4242

4343
error: missing documentation for a method
44-
--> $DIR/lint-missing-doc.rs:53:5
44+
--> $DIR/lint-missing-doc.rs:54:5
4545
|
4646
LL | fn foo(&self);
4747
| ^^^^^^^^^^^^^^
4848

4949
error: missing documentation for a method
50-
--> $DIR/lint-missing-doc.rs:54:5
50+
--> $DIR/lint-missing-doc.rs:55:5
5151
|
5252
LL | fn foo_with_impl(&self) {}
5353
| ^^^^^^^^^^^^^^^^^^^^^^^
5454

5555
error: missing documentation for an associated function
56-
--> $DIR/lint-missing-doc.rs:55:5
56+
--> $DIR/lint-missing-doc.rs:56:5
5757
|
5858
LL | fn foo_no_self();
5959
| ^^^^^^^^^^^^^^^^^
6060

6161
error: missing documentation for an associated function
62-
--> $DIR/lint-missing-doc.rs:56:5
62+
--> $DIR/lint-missing-doc.rs:57:5
6363
|
6464
LL | fn foo_no_self_with_impl() {}
6565
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
6666

6767
error: missing documentation for an associated type
68-
--> $DIR/lint-missing-doc.rs:66:5
68+
--> $DIR/lint-missing-doc.rs:67:5
6969
|
7070
LL | type AssociatedType;
7171
| ^^^^^^^^^^^^^^^^^^^
7272

7373
error: missing documentation for an associated type
74-
--> $DIR/lint-missing-doc.rs:67:5
74+
--> $DIR/lint-missing-doc.rs:68:5
7575
|
7676
LL | type AssociatedTypeDef = Self;
7777
| ^^^^^^^^^^^^^^^^^^^^^^
7878

7979
error: missing documentation for an associated function
80-
--> $DIR/lint-missing-doc.rs:83:5
80+
--> $DIR/lint-missing-doc.rs:84:5
8181
|
8282
LL | pub fn foo() {}
8383
| ^^^^^^^^^^^^
8484

8585
error: missing documentation for an enum
86-
--> $DIR/lint-missing-doc.rs:120:1
86+
--> $DIR/lint-missing-doc.rs:121:1
8787
|
8888
LL | pub enum PubBaz {
8989
| ^^^^^^^^^^^^^^^
9090

9191
error: missing documentation for a variant
92-
--> $DIR/lint-missing-doc.rs:121:5
92+
--> $DIR/lint-missing-doc.rs:122:5
9393
|
9494
LL | PubBazA {
9595
| ^^^^^^^
9696

9797
error: missing documentation for a struct field
98-
--> $DIR/lint-missing-doc.rs:122:9
98+
--> $DIR/lint-missing-doc.rs:123:9
9999
|
100100
LL | a: isize,
101101
| ^^^^^^^^
102102

103103
error: missing documentation for a constant
104-
--> $DIR/lint-missing-doc.rs:153:1
104+
--> $DIR/lint-missing-doc.rs:154:1
105105
|
106106
LL | pub const FOO4: u32 = 0;
107107
| ^^^^^^^^^^^^^^^^^^^
108108

109109
error: missing documentation for a static
110-
--> $DIR/lint-missing-doc.rs:163:1
110+
--> $DIR/lint-missing-doc.rs:164:1
111111
|
112112
LL | pub static BAR4: u32 = 0;
113113
| ^^^^^^^^^^^^^^^^^^^^
114114

115115
error: missing documentation for a function
116-
--> $DIR/lint-missing-doc.rs:169:5
116+
--> $DIR/lint-missing-doc.rs:170:5
117117
|
118118
LL | pub fn undocumented1() {}
119119
| ^^^^^^^^^^^^^^^^^^^^^^
120120

121121
error: missing documentation for a function
122-
--> $DIR/lint-missing-doc.rs:170:5
122+
--> $DIR/lint-missing-doc.rs:171:5
123123
|
124124
LL | pub fn undocumented2() {}
125125
| ^^^^^^^^^^^^^^^^^^^^^^
126126

127127
error: missing documentation for a function
128-
--> $DIR/lint-missing-doc.rs:176:9
128+
--> $DIR/lint-missing-doc.rs:177:9
129129
|
130130
LL | pub fn also_undocumented1() {}
131131
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
132132

133133
error: missing documentation for a function
134-
--> $DIR/lint-missing-doc.rs:191:5
134+
--> $DIR/lint-missing-doc.rs:192:5
135135
|
136136
LL | pub fn extern_fn_undocumented(f: f32) -> f32;
137137
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
138138

139139
error: missing documentation for a static
140-
--> $DIR/lint-missing-doc.rs:196:5
140+
--> $DIR/lint-missing-doc.rs:197:5
141141
|
142142
LL | pub static EXTERN_STATIC_UNDOCUMENTED: u8;
143143
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
144144

145145
error: missing documentation for a foreign type
146-
--> $DIR/lint-missing-doc.rs:201:5
146+
--> $DIR/lint-missing-doc.rs:202:5
147147
|
148148
LL | pub type ExternTyUndocumented;
149149
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
150150

151-
error: aborting due to 24 previous errors
151+
error: missing documentation for a trait alias
152+
--> $DIR/lint-missing-doc.rs:206:1
153+
|
154+
LL | pub trait T = Sync;
155+
| ^^^^^^^^^^^
156+
157+
error: aborting due to 25 previous errors
152158

0 commit comments

Comments
 (0)