From 18737ddc7299fa6fa6e9e5d079a543afff277011 Mon Sep 17 00:00:00 2001 From: pan93412 Date: Tue, 12 Sep 2023 02:15:59 +0800 Subject: [PATCH] Prefer light_rewrite_comment if it is not a doccomment (#5536) Fixes 5533, 5568, 5907 Prevent `format_code_in_doc_comments=true` from affecting how non-doc comments are formatted. --------- Co-authored-by: Yacin Tmimi --- src/comment.rs | 6 +++++- tests/target/issue-5568.rs | 14 ++++++++++++++ tests/target/issue_5533.rs | 6 ++++++ tests/target/issue_5907.rs | 6 ++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 tests/target/issue-5568.rs create mode 100644 tests/target/issue_5533.rs create mode 100644 tests/target/issue_5907.rs diff --git a/src/comment.rs b/src/comment.rs index dec925e14c01..7da0f79bd090 100644 --- a/src/comment.rs +++ b/src/comment.rs @@ -365,7 +365,11 @@ fn identify_comment( trim_left_preserve_layout(first_group, shape.indent, config)? } else if !config.normalize_comments() && !config.wrap_comments() - && !config.format_code_in_doc_comments() + && !( + // `format_code_in_doc_comments` should only take effect on doc comments, + // so we only consider it when this comment block is a doc comment block. + is_doc_comment && config.format_code_in_doc_comments() + ) { light_rewrite_comment(first_group, shape.indent, config, is_doc_comment) } else { diff --git a/tests/target/issue-5568.rs b/tests/target/issue-5568.rs new file mode 100644 index 000000000000..03ca3a4523c9 --- /dev/null +++ b/tests/target/issue-5568.rs @@ -0,0 +1,14 @@ +// rustfmt-max_width: 119 +// rustfmt-format_code_in_doc_comments: true + +mod libs { + fn mrbgems_sources() { + [ + "mrbgems/mruby-compiler/core/codegen.c", // Ruby parser and bytecode generation + "mrbgems/mruby-compiler/core/y.tab.c", // Ruby parser and bytecode generation + "mrbgems/mruby-metaprog/src/metaprog.c", // APIs on Kernel and Module for accessing classes and variables + "mrbgems/mruby-method/src/method.c", // `Method`, `UnboundMethod`, and method APIs on Kernel and Module + "mrbgems/mruby-pack/src/pack.c", // Array#pack and String#unpack + ] + } +} diff --git a/tests/target/issue_5533.rs b/tests/target/issue_5533.rs new file mode 100644 index 000000000000..c3095a44022d --- /dev/null +++ b/tests/target/issue_5533.rs @@ -0,0 +1,6 @@ +// rustfmt-format_code_in_doc_comments: true + +struct TestStruct { + position_currency: String, // Currency for position of this contract. If not null, 1 contract = 1 positionCurrency. + pu: Option, // Previous event update sequense ("u" of previous message), -1 also means None +} diff --git a/tests/target/issue_5907.rs b/tests/target/issue_5907.rs new file mode 100644 index 000000000000..144de636b9b4 --- /dev/null +++ b/tests/target/issue_5907.rs @@ -0,0 +1,6 @@ +// rustfmt-format_code_in_doc_comments: true + +// ``` +// [ +// ] +// ```