diff options
| author | Alexander Kornienko <alexfh@google.com> | 2013-07-16 21:06:13 +0000 |
|---|---|---|
| committer | Alexander Kornienko <alexfh@google.com> | 2013-07-16 21:06:13 +0000 |
| commit | 657c67b164b9c364ba2f2ab01541ebe41d7a4807 (patch) | |
| tree | 12eaa917fca1a0b422c0ba231fcd257469b929f0 /clang/unittests/Format/FormatTest.cpp | |
| parent | 8369aa5e12b6c5a0285c3e672e680e58be1d779c (diff) | |
| download | bcm5719-llvm-657c67b164b9c364ba2f2ab01541ebe41d7a4807.tar.gz bcm5719-llvm-657c67b164b9c364ba2f2ab01541ebe41d7a4807.zip | |
Don't break line comments with escaped newlines.
Summary:
These can appear when comments contain command lines with quoted line
breaks. As the text (including escaped newlines and '//' from consecutive lines)
is a single line comment, we used to break it even when it didn't exceed column
limit. This is a temporary solution, in the future we may want to support this
case completely - at least adjust leading whitespace when changing indentation
of the first line.
Reviewers: djasper
Reviewed By: djasper
CC: cfe-commits, klimek
Differential Revision: http://llvm-reviews.chandlerc.com/D1146
llvm-svn: 186456
Diffstat (limited to 'clang/unittests/Format/FormatTest.cpp')
| -rw-r--r-- | clang/unittests/Format/FormatTest.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 3d5c21a2f77..433d0ec1d71 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -921,6 +921,32 @@ TEST_F(FormatTest, SplitsLongCxxComments) { getLLVMStyleWithColumns(20))); } +TEST_F(FormatTest, DontSplitLineCommentsWithEscapedNewlines) { + EXPECT_EQ("// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n" + "// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n" + "// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + format("// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n" + "// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n" + "// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")); + EXPECT_EQ("int a; // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n" + " // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n" + " // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + format("int a; // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n" + " // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n" + " // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + getLLVMStyleWithColumns(50))); + // FIXME: One day we might want to implement adjustment of leading whitespace + // of the consecutive lines in this kind of comment: + EXPECT_EQ("int\n" + "a; // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n" + " // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n" + " // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + format("int a; // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n" + " // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\n" + " // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + getLLVMStyleWithColumns(49))); +} + TEST_F(FormatTest, PriorityOfCommentBreaking) { EXPECT_EQ("if (xxx == yyy && // aaaaaaaaaaaa\n" " // bbbbbbbbb\n" @@ -2969,6 +2995,21 @@ TEST_F(FormatTest, AlwaysBreakBeforeMultilineStrings) { " \"bbbb\"\n" " \"cccc\");", format("aaaa(qqq, \"bbbb\" \"cccc\");", Break)); + EXPECT_EQ("x = \"a\\\n" + "b\\\n" + "c\";", + format("x = \"a\\\n" + "b\\\n" + "c\";", + NoBreak)); + EXPECT_EQ("x =\n" + " \"a\\\n" + "b\\\n" + "c\";", + format("x = \"a\\\n" + "b\\\n" + "c\";", + Break)); } TEST_F(FormatTest, AlignsPipes) { @@ -4992,6 +5033,16 @@ TEST_F(FormatTest, BreakStringLiterals) { format("#define A \"some text other\";", AlignLeft)); } +TEST_F(FormatTest, DontSplitStringLiteralsWithEscapedNewlines) { + EXPECT_EQ("aaaaaaaaaaa =\n" + " \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n" + " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n" + " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\";", + format("aaaaaaaaaaa = \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n" + " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n" + " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\";")); +} + TEST_F(FormatTest, SkipsUnknownStringLiterals) { EXPECT_EQ( "u8\"unsupported literal\";", |

