]> granicus.if.org Git - clang/commitdiff
clang-format: Fix bug when aligning trailing /**/-comments in macros.
authorDaniel Jasper <djasper@google.com>
Sun, 27 Apr 2014 10:03:19 +0000 (10:03 +0000)
committerDaniel Jasper <djasper@google.com>
Sun, 27 Apr 2014 10:03:19 +0000 (10:03 +0000)
Previously this could lead to a column limit violation with the
required escaped newlines.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207351 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/WhitespaceManager.cpp
unittests/Format/FormatTest.cpp

index cea4799743171adfb44f6556975a6e4b85fe9600..2906b17d7b04e69631430f90cf561cc6a8c7bed4 100644 (file)
@@ -154,8 +154,9 @@ void WhitespaceManager::alignTrailingComments() {
       continue;
 
     unsigned ChangeMinColumn = Changes[i].StartOfTokenColumn;
-    // FIXME: Correctly handle ChangeMaxColumn in PP directives.
     unsigned ChangeMaxColumn = Style.ColumnLimit - Changes[i].TokenLength;
+    if (i + 1 != e && Changes[i + 1].ContinuesPPDirective)
+      ChangeMaxColumn -= 2;
     // If this comment follows an } in column 0, it probably documents the
     // closing of a namespace and we don't want to align it.
     bool FollowsRBraceInColumn0 = i > 0 && Changes[i].NewlinesBefore == 0 &&
index 398850c38ace6519206fd18f27ff488023337fbd..d18968afd5a722f498749f29510ad97fc998f447 100644 (file)
@@ -832,6 +832,17 @@ TEST_F(FormatTest, UnderstandsSingleLineComments) {
                    " // first\n"
                    "// at start\n"
                    "otherLine();"));
+
+  verifyFormat(
+      "#define A                                                  \\\n"
+      "  int i; /* iiiiiiiiiiiiiiiiiiiii */                       \\\n"
+      "  int jjjjjjjjjjjjjjjjjjjjjjjj; /* */",
+      getLLVMStyleWithColumns(60));
+  verifyFormat(
+      "#define A                                                   \\\n"
+      "  int i;                        /* iiiiiiiiiiiiiiiiiiiii */ \\\n"
+      "  int jjjjjjjjjjjjjjjjjjjjjjjj; /* */",
+      getLLVMStyleWithColumns(61));
 }
 
 TEST_F(FormatTest, KeepsParameterWithTrailingCommentsOnTheirOwnLine) {