about summary refs log tree commit diff
path: root/src/tools/clippy/tests/ui/missing_doc.rs
blob: 705de959cb7da33c9163c2de11d7134990bc7928 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
//@needs-asm-support
//@aux-build: proc_macros.rs
//@aux-build: proc_macro_attr.rs

#![warn(clippy::missing_docs_in_private_items)]
// When denying at the crate level, be sure to not get random warnings from the
// injected intrinsics by the compiler.
#![allow(dead_code)]
//! Some garbage docs for the crate here
#![doc = "More garbage"]

#[macro_use]
extern crate proc_macro_attr;
extern crate proc_macros;

use proc_macros::with_span;
use std::arch::global_asm;

type Typedef = String;
//~^ missing_docs_in_private_items
pub type PubTypedef = String;

mod module_no_dox {}
//~^ missing_docs_in_private_items
pub mod pub_module_no_dox {}

/// dox
pub fn foo() {}
pub fn foo2() {}
fn foo3() {}
//~^ missing_docs_in_private_items
#[allow(clippy::missing_docs_in_private_items)]
pub fn foo4() {}

// It sure is nice if doc(hidden) implies allow(missing_docs), and that it
// applies recursively
#[doc(hidden)]
mod a {
    pub fn baz() {}
    pub mod b {
        pub fn baz() {}
    }
}

enum Baz {
    //~^ missing_docs_in_private_items
    BazA { a: isize, b: isize },
    //~^ missing_docs_in_private_items
    //~| missing_docs_in_private_items
    //~| missing_docs_in_private_items
    BarB,
    //~^ missing_docs_in_private_items
}

pub enum PubBaz {
    PubBazA { a: isize },
}

/// dox
pub enum PubBaz2 {
    /// dox
    PubBaz2A {
        /// dox
        a: isize,
    },
}

#[allow(clippy::missing_docs_in_private_items)]
pub enum PubBaz3 {
    PubBaz3A { b: isize },
}

#[doc(hidden)]
pub fn baz() {}

const FOO: u32 = 0;
//~^ missing_docs_in_private_items
/// dox
pub const FOO1: u32 = 0;
#[allow(clippy::missing_docs_in_private_items)]
pub const FOO2: u32 = 0;
#[doc(hidden)]
pub const FOO3: u32 = 0;
pub const FOO4: u32 = 0;

static BAR: u32 = 0;
//~^ missing_docs_in_private_items
/// dox
pub static BAR1: u32 = 0;
#[allow(clippy::missing_docs_in_private_items)]
pub static BAR2: u32 = 0;
#[doc(hidden)]
pub static BAR3: u32 = 0;
pub static BAR4: u32 = 0;

mod internal_impl {
    //~^ missing_docs_in_private_items
    /// dox
    pub fn documented() {}
    pub fn undocumented1() {}
    pub fn undocumented2() {}
    fn undocumented3() {}
    //~^ missing_docs_in_private_items
    /// dox
    pub mod globbed {
        /// dox
        pub fn also_documented() {}
        pub fn also_undocumented1() {}
        fn also_undocumented2() {}
        //~^ missing_docs_in_private_items
    }
}
/// dox
pub mod public_interface {
    pub use crate::internal_impl::globbed::*;
    pub use crate::internal_impl::{documented as foo, documented, undocumented1 as bar, undocumented2};
}

fn main() {}

// Ensure global asm doesn't require documentation.
global_asm! { "" }

// Don't lint proc macro output with an unexpected span.
with_span!(span pub struct FooPm { pub field: u32});
with_span!(span pub struct FooPm2;);
with_span!(span pub enum FooPm3 { A, B(u32), C { field: u32 }});
with_span!(span pub fn foo_pm() {});
with_span!(span pub static FOO_PM: u32 = 0;);
with_span!(span pub const FOO2_PM: u32 = 0;);

// Don't lint unnamed constants
const _: () = ();

fn issue13298() {
    //~^ missing_docs_in_private_items
    // 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.
#[rewrite_struct]
pub struct Test {
    /// Dox
    a: u8,
}