From 036244cdcec6110016ff4287b06d7ac8698a9a15 Mon Sep 17 00:00:00 2001 From: Shohei Wada Date: Wed, 13 Jun 2018 21:54:06 +0900 Subject: [PATCH] Fix #2728. --- src/lib.rs | 12 ++++++++++-- tests/source/issue-2728.rs | 8 ++++++++ tests/target/issue-2728.rs | 8 ++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 tests/source/issue-2728.rs create mode 100644 tests/target/issue-2728.rs diff --git a/src/lib.rs b/src/lib.rs index 7c33a01953b..114e72c4847 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -718,10 +718,18 @@ fn format_code_block(code_snippet: &str, config: &Config) -> Option { let mut result = String::with_capacity(snippet.len()); let mut is_first = true; + // While formatting the code, ignore the config's newline style setting and always use "\n" + // instead of "\r\n" for the newline characters. This is okay because the output here is + // not directly outputted by rustfmt command, but used by the comment formatter's input. + // We have output-file-wide "\n" ==> "\r\n" conversion proccess after here if it's necessary. + let mut config_with_unix_newline = config.clone(); + config_with_unix_newline + .set() + .newline_style(NewlineStyle::Unix); + let formatted = format_snippet(&snippet, &config_with_unix_newline)?; + // Trim "fn main() {" on the first line and "}" on the last line, // then unindent the whole code block. - let formatted = format_snippet(&snippet, config)?; - // 2 = "}\n" let block_len = formatted.rfind('}').unwrap_or(formatted.len()); let mut is_indented = true; for (kind, ref line) in LineClasses::new(&formatted[FN_MAIN_PREFIX.len()..block_len]) { diff --git a/tests/source/issue-2728.rs b/tests/source/issue-2728.rs new file mode 100644 index 00000000000..6cb41b75b6d --- /dev/null +++ b/tests/source/issue-2728.rs @@ -0,0 +1,8 @@ +// rustfmt-wrap_comments: true +// rustfmt-newline_style: Windows + +//! ```rust +//! extern crate uom; +//! ``` + +fn main() {} diff --git a/tests/target/issue-2728.rs b/tests/target/issue-2728.rs new file mode 100644 index 00000000000..6cb41b75b6d --- /dev/null +++ b/tests/target/issue-2728.rs @@ -0,0 +1,8 @@ +// rustfmt-wrap_comments: true +// rustfmt-newline_style: Windows + +//! ```rust +//! extern crate uom; +//! ``` + +fn main() {}