From ad7dc420cdfe22c8295c36c4e3a66cc9cf1cbe2b Mon Sep 17 00:00:00 2001 From: Markus Westerlind Date: Fri, 20 Nov 2015 23:31:05 +0100 Subject: [PATCH] Avoid adding an extra newline after block comments When block comments were rewritten to line comments they check if a new line needs to be added and adds one if needed. It only checked for '\n' however which would cause a newline to be added even if the comment was ended by "\r\n" --- src/missed_spans.rs | 7 ++++--- tests/source/comment_crlf_newline.rs | 3 +++ tests/target/comment_crlf_newline.rs | 3 +++ 3 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 tests/source/comment_crlf_newline.rs create mode 100644 tests/target/comment_crlf_newline.rs diff --git a/src/missed_spans.rs b/src/missed_spans.rs index b83f07e05d7..99c1510da65 100644 --- a/src/missed_spans.rs +++ b/src/missed_spans.rs @@ -143,11 +143,12 @@ impl<'a> FmtVisitor<'a> { line_start = offset + subslice.len(); if let Some('/') = subslice.chars().skip(1).next() { + // Add a newline after line comments self.buffer.push_str("\n"); } else if line_start < snippet.len() { - let x = (&snippet[line_start..]).chars().next().unwrap() != '\n'; - - if x { + // For other comments add a newline if there isn't one at the end already + let c = snippet[line_start..].chars().next().unwrap(); + if c != '\n' && c != '\r' { self.buffer.push_str("\n"); } } diff --git a/tests/source/comment_crlf_newline.rs b/tests/source/comment_crlf_newline.rs new file mode 100644 index 00000000000..189a7053179 --- /dev/null +++ b/tests/source/comment_crlf_newline.rs @@ -0,0 +1,3 @@ +/* Block comments followed by CRLF newlines should not an extra newline at the end */ + +/* Something else */ diff --git a/tests/target/comment_crlf_newline.rs b/tests/target/comment_crlf_newline.rs new file mode 100644 index 00000000000..3b19b01a7eb --- /dev/null +++ b/tests/target/comment_crlf_newline.rs @@ -0,0 +1,3 @@ +// Block comments followed by CRLF newlines should not an extra newline at the end + +// Something else