]> granicus.if.org Git - clang/commitdiff
Fix line-breaking problem caused by comment.
authorDaniel Jasper <djasper@google.com>
Mon, 3 Jun 2013 08:42:05 +0000 (08:42 +0000)
committerDaniel Jasper <djasper@google.com>
Mon, 3 Jun 2013 08:42:05 +0000 (08:42 +0000)
Before, clang-format would not find a solution for formatting:
if ((aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ||
     bbbbbbbbbbbbbbbbbb) && // aaaaaaaaaaaaaaaa
    cccccc) {
}

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

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

index 3ae279216f8ee1dec8af567a8e19ebd5073af0b8..e0142db554b7e012db08e8a27fafa771a20c28ce 100644 (file)
@@ -1040,6 +1040,7 @@ private:
     // should also break after the operator.
     if (Previous.Type == TT_BinaryOperator &&
         Current.Type != TT_BinaryOperator && // Special case for ">>".
+        !Current.isTrailingComment() &&
         !Previous.isOneOf(tok::lessless, tok::question) &&
         Previous.getPrecedence() != prec::Assignment &&
         State.Stack.back().BreakBeforeParameter)
index 24e4769274fff8b2a9e374536b3f09f4fb759e7d..98a6e07ab281ab5168d1fe766e0bea2fd14efe93 100644 (file)
@@ -1991,6 +1991,10 @@ TEST_F(FormatTest, LineBreakingInBinaryExpressions) {
                "        TheLine.Last->FormatTok.Tok.getLocation()) -\n"
                "    1);");
 
+  verifyFormat("if ((aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ||\n"
+               "     bbbbbbbbbbbbbbbbbb) && // aaaaaaaaaaaaaaaa\n"
+               "    cccccc) {\n}");
+
   FormatStyle OnePerLine = getLLVMStyle();
   OnePerLine.BinPackParameters = false;
   verifyFormat(