diff --git a/src/lists.rs b/src/lists.rs index f1b01ea8055..57f778896d3 100644 --- a/src/lists.rs +++ b/src/lists.rs @@ -566,14 +566,9 @@ where pub fn extract_pre_comment(pre_snippet: &str) -> (Option, ListItemCommentStyle) { let trimmed_pre_snippet = pre_snippet.trim(); + let has_block_comment = trimmed_pre_snippet.ends_with("*/"); let has_single_line_comment = trimmed_pre_snippet.starts_with("//"); - let has_block_comment = trimmed_pre_snippet.starts_with("/*"); - if has_single_line_comment { - ( - Some(trimmed_pre_snippet.to_owned()), - ListItemCommentStyle::DifferentLine, - ) - } else if has_block_comment { + if has_block_comment { let comment_end = pre_snippet.chars().rev().position(|c| c == '/').unwrap(); if pre_snippet .chars() @@ -591,6 +586,11 @@ pub fn extract_pre_comment(pre_snippet: &str) -> (Option, ListItemCommen ListItemCommentStyle::SameLine, ) } + } else if has_single_line_comment { + ( + Some(trimmed_pre_snippet.to_owned()), + ListItemCommentStyle::DifferentLine, + ) } else { (None, ListItemCommentStyle::None) } diff --git a/tests/source/expr-block.rs b/tests/source/expr-block.rs index 48cc1fd72ae..a3e6100b7f2 100644 --- a/tests/source/expr-block.rs +++ b/tests/source/expr-block.rs @@ -280,6 +280,21 @@ fn issue_1862() { ) } +fn issue_3025() { + foo( + // This describes the argument below. + /* bar = */ None , + // This describes the argument below. + something_something, + // This describes the argument below. */ + None , + // This describes the argument below. + /* This comment waaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaay too long to be kept on the same line */ None , + // This describes the argument below. + /* com */ this_last_arg_is_tooooooooooooooooooooooooooooooooo_long_to_be_kept_with_the_pre_comment , + ) +} + fn issue_1878() { let channel: &str = seq.next_element()?.ok_or_else(|| de::Error::invalid_length(2, &self))?; } diff --git a/tests/target/expr-block.rs b/tests/target/expr-block.rs index 3d452cbde39..c5770065087 100644 --- a/tests/target/expr-block.rs +++ b/tests/target/expr-block.rs @@ -281,6 +281,23 @@ fn issue_1862() { ) } +fn issue_3025() { + foo( + // This describes the argument below. + /* bar = */ None, + // This describes the argument below. + something_something, + // This describes the argument below. */ + None, + // This describes the argument below. + /* This comment waaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaay too long to be kept on the same line */ + None, + // This describes the argument below. + /* com */ + this_last_arg_is_tooooooooooooooooooooooooooooooooo_long_to_be_kept_with_the_pre_comment, + ) +} + fn issue_1878() { let channel: &str = seq .next_element()?