================
@@ -25768,6 +25768,29 @@ TEST_F(FormatTest, OperatorPassedAsAFunctionPtr) {
verifyFormat("foo(operator, , -42);", Style);
}
+TEST_F(FormatTest, LineSpliceWithTrailingWhitespace) {
+ // Test that each sequence of a backslash (\) immediately followed by zero or
+ // more horizontal whitespace characters and then a new-line character is
+ // treated as a single logical line while formatting (as per P2223R2).
+ FormatStyle Style = getLLVMStyle();
+ Style.AlignEscapedNewlines = FormatStyle::ENAS_DontAlign;
+ Style.UseTab = FormatStyle::UT_Never;
+
+ verifyFormat("int i;",
+ " \\ \n"
+ " int i;",
+ Style);
+ verifyFormat("#define FOO(args) \\\n struct a {};\n",
+ "#define FOO( args ) \\ \n"
+ "struct a{\\\t\t\t\n"
+ " };\n",
+ Style);
+ verifyFormat("comment here",
+ "comment \\ \n"
+ "here",
+ Style);
----------------
naveen-seth wrote:
Sorry, I forgot the leading `//`.
Currently, `clang-format` already detects line-splicing in comments, even with
trailing whitespace. However, unlike with directives and other cases, trailing
whitespace in comment splices is not removed.
For example, with the current behavior, the following test passes:
```cpp
verifyFormat("//comment \\ \n"
"here",
"//comment \\ \n"
"here",
Style);
```
instead of trimming the whitespace as it does elsewhere.
This is what I would have expected:
```cpp
verifyFormat("//comment \\\n"
"here",
"//comment \\ \n"
"here",
Style);
```
I wasn't sure whether this should be addressed in this patch or if it's
intended behavior, so I’ve deleted the test for now.
Please let me know if this needs fixing, and thank you for the review.
https://github.com/llvm/llvm-project/pull/145243
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits