Hi,

Attached patch adds a test and a fix for clang-format.
The formatting works as expected but replacements get generated every time which needlessly touch files when formatting code.

I hope the patch is fine, I created it with git...

Thanks,
MAT.
diff --git lib/Format/BreakableToken.cpp lib/Format/BreakableToken.cpp
index 66e935a..64e9a7d 100644
--- lib/Format/BreakableToken.cpp
+++ lib/Format/BreakableToken.cpp
@@ -342,8 +342,13 @@ void BreakableBlockComment::adjustWhitespace(unsigned 
LineIndex,
     ++EndOfPreviousLine;
   // Calculate the start of the non-whitespace text in the current line.
   size_t StartOfLine = Lines[LineIndex].find_first_not_of(Blanks);
-  if (StartOfLine == StringRef::npos)
+  if (StartOfLine == StringRef::npos) {
     StartOfLine = Lines[LineIndex].size();
+    // When a line is entirely made of spaces, remove the trailing \r
+    // from the character count.
+    if (Lines[LineIndex].endswith("\r"))
+      --StartOfLine;
+  }
 
   StringRef Whitespace = Lines[LineIndex].substr(0, StartOfLine);
   // Adjust Lines to only contain relevant text.
diff --git unittests/Format/FormatTest.cpp unittests/Format/FormatTest.cpp
index 4c58e21..942f023 100644
--- unittests/Format/FormatTest.cpp
+++ unittests/Format/FormatTest.cpp
@@ -151,6 +151,13 @@ TEST_F(FormatTest, OnlyGeneratesNecessaryReplacements) {
                    "  f();\n"
                    "}"));
   EXPECT_EQ(0, ReplacementCount);
+  EXPECT_EQ("/*\r\n"
+            "\r\n"
+            "*/\r\n",
+            format("/*\r\n"
+            "\r\n"
+            "*/\r\n"));
+  EXPECT_EQ(0, ReplacementCount);
 }
 
 TEST_F(FormatTest, RemovesTrailingWhitespaceOfFormattedLine) {
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to