| #![warn(clippy::empty_line_after_doc_comments)] | |
| #![deny(clippy::empty_line_after_outer_attr)] | |
| //~vvv empty_line_after_doc_comments | |
| /// Meant to be an | |
| /// inner doc comment | |
| /// for the crate | |
| fn first_in_crate() {} | |
| mod m { | |
| //~vvv empty_line_after_doc_comments | |
| /// Meant to be an | |
| /// inner doc comment | |
| /// for the module | |
| fn first_in_module() {} | |
| } | |
| mod some_mod { | |
| //! This doc comment should *NOT* produce a warning | |
| mod some_inner_mod { | |
| fn some_noop() {} | |
| } | |
| //~v empty_line_after_doc_comments | |
| /// # Indented | |
| /// Blank line | |
| fn indented() {} | |
| } | |
| //~v empty_line_after_doc_comments | |
| /// This should produce a warning | |
| fn with_doc_and_newline() {} | |
| // This should *NOT* produce a warning | |
| #[crate_type = "lib"] | |
| /// some comment | |
| fn with_no_newline_and_comment() {} | |
| //~v empty_line_after_doc_comments | |
| /// This doc comment should produce a warning | |
| /** This is also a doc comment and is part of the warning | |
| */ | |
| #[allow(non_camel_case_types)] | |
| #[allow(missing_docs)] | |
| #[allow(dead_code)] | |
| fn three_attributes() {} | |
| mod misattributed { | |
| //~v empty_line_after_doc_comments | |
| /// docs for `old_code` | |
| // fn old_code() {} | |
| fn new_code() {} | |
| //~vv empty_line_after_doc_comments | |
| /// Docs | |
| /// for OldA | |
| // struct OldA; | |
| /// Docs | |
| /// for OldB | |
| // struct OldB; | |
| /// Docs | |
| /// for Multiple | |
| #[allow(dead_code)] | |
| struct Multiple; | |
| } | |
| mod block_comments { | |
| //~v empty_line_after_doc_comments | |
| /** | |
| * Meant to be inner doc comment | |
| */ | |
| fn first_in_module() {} | |
| //~v empty_line_after_doc_comments | |
| /** | |
| * Docs for `old_code` | |
| */ | |
| /* fn old_code() {} */ | |
| /** | |
| * Docs for `new_code` | |
| */ | |
| fn new_code() {} | |
| //~v empty_line_after_doc_comments | |
| /// Docs for `old_code2` | |
| /* fn old_code2() {} */ | |
| /// Docs for `new_code2` | |
| fn new_code2() {} | |
| } | |
| // This should *NOT* produce a warning | |
| #[doc = " | |
| Returns the escaped value of the textual representation of | |
| "] | |
| pub fn function() -> bool { | |
| true | |
| } | |
| // This should *NOT* produce a warning | |
| #[derive(Clone, Copy)] | |
| pub enum FooFighter { | |
| Bar1, | |
| Bar2, | |
| Bar3, | |
| Bar4, | |
| } | |
| /// Should not lint | |
| // some line comment | |
| /// gaps without an empty line | |
| struct LineComment; | |
| /// This should *NOT* produce a warning because the empty line is inside a block comment | |
| /* | |
| */ | |
| pub struct EmptyInBlockComment; | |
| /// This should *NOT* produce a warning | |
| /* test */ | |
| pub struct BlockComment; | |
| /// Ignore the empty line inside a cfg_attr'd out attribute | |
| #[cfg_attr(any(), multiline( | |
| foo = 1 | |
| bar = 2 | |
| ))] | |
| fn empty_line_in_cfg_attr() {} | |
| trait Foo { | |
| fn bar(); | |
| } | |
| impl Foo for LineComment { | |
| /// comment on assoc item | |
| //~^ empty_line_after_doc_comments | |
| fn bar() {} | |
| } | |
| //~v empty_line_after_doc_comments | |
| /// Docs for this item. | |
| // fn some_item() {} | |
| impl LineComment {} // or any other nameless item kind | |
| fn main() {} |