1 //! This file tests for the `DOC_MARKDOWN` lint.
3 #![allow(dead_code, incomplete_features)]
4 #![warn(clippy::doc_markdown)]
5 #![feature(custom_inner_attributes, const_generics, const_evaluatable_checked, const_option)]
8 /// The foo_bar function does _nothing_. See also foo::bar. (note the dot there)
9 /// Markdown is _weird_. I mean _really weird_. This \_ is ok. So is `_`. But not Foo::some_fun
10 /// which should be reported only once despite being __doubly bad__.
11 /// Here be ::a::global:path.
12 /// That's not code ~NotInCodeBlock~.
13 /// be_sure_we_got_to_the_end_of_it
17 /// That one tests multiline ticks.
27 /// be_sure_we_got_to_the_end_of_it
28 fn multiline_codeblock() {
31 /// This _is a test for
34 /// be_sure_we_got_to_the_end_of_it
38 /// This tests units. See also #835.
39 /// kiB MiB GiB TiB PiB EiB
40 /// kib Mib Gib Tib Pib Eib
43 /// 32kiB 32MiB 32GiB 32TiB 32PiB 32EiB
44 /// 32kib 32Mib 32Gib 32Tib 32Pib 32Eib
45 /// 32kB 32MB 32GB 32TB 32PB 32EB
46 /// 32kb 32Mb 32Gb 32Tb 32Pb 32Eb
48 /// be_sure_we_got_to_the_end_of_it
52 /// This tests allowed identifiers.
53 /// KiB MiB GiB TiB PiB EiB
59 /// ClojureScript CoffeeScript JavaScript PureScript TypeScript
63 /// OpenGL OpenMP OpenSSH OpenSSL OpenStreetMap OpenDNS
68 /// TeX LaTeX BibTeX BibLaTeX
70 /// CamelCase (see also #2395)
71 /// be_sure_we_got_to_the_end_of_it
75 /// This test has [a link_with_underscores][chunked-example] inside it. See #823.
76 /// See also [the issue tracker](https://github.com/rust-lang/rust-clippy/search?q=clippy::doc_markdown&type=Issues)
77 /// on GitHub (which is a camel-cased word, but is OK). And here is another [inline link][inline_link].
78 /// It can also be [inline_link2].
80 /// [chunked-example]: https://en.wikipedia.org/wiki/Chunked_transfer_encoding#Example
81 /// [inline_link]: https://foobar
82 /// [inline_link2]: https://foobar
83 /// The `main` function is the entry point of the program. Here it only calls the `foo_bar` and
84 /// `multiline_ticks` functions.
86 /// expression of the type `_ <bit_op> m <cmp_op> c` (where `<bit_op>`
87 /// is one of {`&`, '|'} and `<cmp_op>` is one of {`!=`, `>=`, `>` ,
88 /// be_sure_we_got_to_the_end_of_it
91 multiline_codeblock();
97 /// Talks about `CamelCaseThing`. Titles should be ignored; see issue #897.
101 /// Not a title #897 CamelCaseThing
102 /// be_sure_we_got_to_the_end_of_it
106 /// I am confused by brackets? (`x_y`)
107 /// I am confused by brackets? (foo `x_y`)
108 /// I am confused by brackets? (`x_y` foo)
109 /// be_sure_we_got_to_the_end_of_it
113 /// Diesel queries also have a similar problem to [Iterator][iterator], where
115 /// returning them from a function requires exposing the implementation of that
116 /// function. The [`helper_types`][helper_types] module exists to help with this,
117 /// but you might want to hide the return type or have it conditionally change.
118 /// Boxing can achieve both.
120 /// [iterator]: https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html
121 /// [helper_types]: ../helper_types/index.html
122 /// be_sure_we_got_to_the_end_of_it
129 /// bar](https://doc.rust-lang.org/stable/std/iter/trait.IteratorFooBar.html)
133 /** E.g., serialization of an empty list: FooBar
135 That's in a code block: `PackedNode`
139 be_sure_we_got_to_the_end_of_it
144 /** E.g., serialization of an empty list: FooBar
146 That's in a code block: PackedNode
150 be_sure_we_got_to_the_end_of_it
155 /// Tests more than three quotes:
161 /// be_sure_we_got_to_the_end_of_it
165 /// See [NIST SP 800-56A, revision 2].
167 /// [NIST SP 800-56A, revision 2]:
168 /// https://github.com/rust-lang/rust-clippy/issues/902#issuecomment-261919419
169 fn issue_902_comment() {}
171 #[cfg_attr(feature = "a", doc = " ```")]
172 #[cfg_attr(not(feature = "a"), doc = " ```ignore")]
174 /// let s = "localhost:10000".to_string();
175 /// println!("{}", s);
181 * This is a doc comment that should not be a list
182 *This would also be an error under a strict common mark interpretation
186 /// Ok: <http://www.unicode.org/reports/tr9/#Reordering_Resolved_Levels>
188 /// Not ok: http://www.unicode.org
189 /// Not ok: https://www.unicode.org
190 /// Not ok: http://www.unicode.org/
191 /// Not ok: http://www.unicode.org/reports/tr9/#Reordering_Resolved_Levels
194 /// An iterator over mycrate::Collection's values.
195 /// It should not lint a `'static` lifetime in ticks.
198 /// This should not cause the lint to trigger:
199 /// #REQ-data-family.lint_partof_exists
202 /// This should not cause an ICE:
204 fn pulldown_cmark_crash() {}
206 // issue #7033 - const_evaluatable_checked ICE
207 struct S<T, const N: usize>
208 where [(); N.checked_next_power_of_two().unwrap()]: {
209 arr: [T; N.checked_next_power_of_two().unwrap()],
213 impl<T: Copy + Default, const N: usize> S<T, N>
214 where [(); N.checked_next_power_of_two().unwrap()]: {
217 arr: [T::default(); N.checked_next_power_of_two().unwrap()],