| #![feature(custom_inner_attributes)] | |
| #![rustfmt::skip] | |
| #![warn(clippy::doc_paragraphs_missing_punctuation)] | |
| /// Returns the Answer to the Ultimate Question of Life, the Universe, and Everything. | |
| //~^ doc_paragraphs_missing_punctuation | |
| fn answer() -> i32 { | |
| 42 | |
| } | |
| /// The `Option` type. | |
| //~^ doc_paragraphs_missing_punctuation | |
| // Triggers even in the presence of another attribute. | |
| #[derive(Debug)] | |
| enum MyOption<T> { | |
| /// No value. | |
| //~^ doc_paragraphs_missing_punctuation | |
| None, | |
| /// Some value of type `T`. | |
| Some(T), | |
| } | |
| // Triggers correctly even when interleaved with other attributes. | |
| /// A multiline | |
| #[derive(Debug)] | |
| /// doc comment: | |
| /// only the last line triggers the lint. | |
| //~^ doc_paragraphs_missing_punctuation | |
| enum Exceptions { | |
| /// Question marks are fine? | |
| QuestionMark, | |
| /// Exclamation marks are fine! | |
| ExclamationMark, | |
| /// Ellipses are ok too… | |
| Ellipsis, | |
| /// HTML content is however not checked: | |
| /// <em>Raw HTML is allowed as well</em> | |
| RawHtml, | |
| /// The raw HTML exception actually does the right thing to autolinks: | |
| /// <https://spec.commonmark.org/0.31.2/#autolinks>. | |
| //~^ doc_paragraphs_missing_punctuation | |
| MarkdownAutolink, | |
| /// This table introduction ends with a colon: | |
| /// | |
| /// | Exception | Note | | |
| /// | -------------- | ----- | | |
| /// | Markdown table | A-ok | | |
| MarkdownTable, | |
| } | |
| // Check the lint can be expected on a whole enum at once. | |
| #[expect(clippy::doc_paragraphs_missing_punctuation)] | |
| enum Char { | |
| /// U+0000 | |
| Null, | |
| /// U+0001 | |
| StartOfHeading, | |
| } | |
| // Check the lint can be expected on a single variant without affecting others. | |
| enum Char2 { | |
| #[expect(clippy::doc_paragraphs_missing_punctuation)] | |
| /// U+0000 | |
| Null, | |
| /// U+0001. | |
| //~^ doc_paragraphs_missing_punctuation | |
| StartOfHeading, | |
| } | |
| mod module { | |
| //! Works on | |
| //! inner attributes too. | |
| //~^ doc_paragraphs_missing_punctuation | |
| } | |
| enum Trailers { | |
| /// Sometimes the last sentence ends with parentheses (and that's ok). | |
| ParensPassing, | |
| /// (Sometimes the last sentence is in parentheses.) | |
| SentenceInParensPassing, | |
| /// **Sometimes the last sentence is in bold, and that's ok.** | |
| DoubleStarPassing, | |
| /// **But sometimes it is missing a period.** | |
| //~^ doc_paragraphs_missing_punctuation | |
| DoubleStarFailing, | |
| /// _Sometimes the last sentence is in italics, and that's ok._ | |
| UnderscorePassing, | |
| /// _But sometimes it is missing a period._ | |
| //~^ doc_paragraphs_missing_punctuation | |
| UnderscoreFailing, | |
| /// This comment ends with "a quote." | |
| AmericanStyleQuotePassing, | |
| /// This comment ends with "a quote". | |
| BritishStyleQuotePassing, | |
| } | |
| /// Doc comments can end with an [inline link](#anchor). | |
| //~^ doc_paragraphs_missing_punctuation | |
| struct InlineLink; | |
| /// Some doc comments contain [link reference definitions][spec]. | |
| //~^ doc_paragraphs_missing_punctuation | |
| /// | |
| /// [spec]: https://spec.commonmark.org/0.31.2/#link-reference-definitions | |
| struct LinkRefDefinition; | |
| // List items do not always need to end with a period. | |
| enum UnorderedLists { | |
| /// This list has an introductory sentence: | |
| /// | |
| /// - A list item | |
| Dash, | |
| /// + A list item | |
| Plus, | |
| /// * A list item | |
| Star, | |
| } | |
| enum OrderedLists { | |
| /// 1. A list item | |
| Dot, | |
| /// 42) A list item | |
| Paren, | |
| } | |
| /// Some elements do not have to be introduced by an independent clause. | |
| enum NotIndependentClause { | |
| /// Lists are allowed to be introduced by a clause that is not independent: this usually | |
| /// requires that | |
| /// | |
| /// - items end with a comma or a semicolon, which is not enforced; | |
| /// - the last item end with a period, which is also not enforced. | |
| List, | |
| /// For instance, the function | |
| /// | |
| /// ``` | |
| /// fn answer() {} | |
| /// ``` | |
| /// | |
| /// returns the Answer to the Ultimate Question of Life, the Universe, and Everything. | |
| CodeBlock, | |
| } | |
| /// Doc comments with trailing blank lines are supported. | |
| //~^ doc_paragraphs_missing_punctuation | |
| /// | |
| struct TrailingBlankLine; | |
| /// This doc comment has multiple paragraph. | |
| /// This first paragraph is missing punctuation. | |
| //~^ doc_paragraphs_missing_punctuation | |
| /// | |
| /// The second one as well | |
| /// And it has multiple sentences. | |
| //~^ doc_paragraphs_missing_punctuation | |
| /// | |
| /// Same for this third and last one. | |
| //~^ doc_paragraphs_missing_punctuation | |
| struct MultiParagraphDocComment; | |
| /// ``` | |
| struct IncompleteBlockCode; | |
| /// This ends with a code `span`. | |
| //~^ doc_paragraphs_missing_punctuation | |
| struct CodeSpan; | |
| #[expect(clippy::empty_docs)] | |
| /// | |
| struct EmptyDocComment; | |
| /** | |
| * Block doc comments work. | |
| * | |
| */ | |
| //~^^^ doc_paragraphs_missing_punctuation | |
| struct BlockDocComment; | |
| /// Sometimes a doc attribute is used for concatenation | |
| /// ``` | |
| #[doc = ""] | |
| /// ``` | |
| struct DocAttribute; | |
| // Should not trigger when given simply an image which is also a link. | |
| /// [![git]](https://github.com/rust-lang/rust) | |
| /// | |
| /// [git]: https://rustfoundation.org/wp-content/uploads/2024/07/cropped-rust-lang-logo-black-270x270.png | |
| fn rust_is_cool() ->i32{ | |
| 1 | |
| } |