Improve handling of trailing block comments.

We can now (even in non-bin-packing modes) format:
someFunction(1, /* comment 1 */
             2, /* comment 2 */
             3, /* comment 3 */
             aaa);

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174309 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index 2f14fc0..91cbc2e 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -690,7 +690,8 @@
       return true;
     if (State.NextToken->Parent->is(tok::comma) &&
         State.Stack.back().BreakAfterComma &&
-        State.NextToken->Type != TT_LineComment)
+        (State.NextToken->isNot(tok::comment) ||
+         !State.NextToken->Children[0].MustBreakBefore))
       return true;
     if ((State.NextToken->Type == TT_CtorInitializerColon ||
          (State.NextToken->Parent->ClosesTemplateDeclaration &&
diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp
index 0676df6..0cfd990 100644
--- a/lib/Format/TokenAnnotator.cpp
+++ b/lib/Format/TokenAnnotator.cpp
@@ -662,17 +662,15 @@
 
   if (Current.FormatTok.MustBreakBefore) {
     Current.MustBreakBefore = true;
+  } else if (Current.Type == TT_LineComment) {
+    Current.MustBreakBefore = Current.FormatTok.NewlinesBefore > 0;
+  } else if ((Current.Parent->is(tok::comment) &&
+              Current.FormatTok.NewlinesBefore > 0) ||
+             (Current.is(tok::string_literal) &&
+              Current.Parent->is(tok::string_literal))) {
+    Current.MustBreakBefore = true;
   } else {
-    if (Current.Type == TT_LineComment) {
-      Current.MustBreakBefore = Current.FormatTok.NewlinesBefore > 0;
-    } else if ((Current.Parent->is(tok::comment) &&
-                Current.FormatTok.NewlinesBefore > 0) ||
-               (Current.is(tok::string_literal) &&
-                Current.Parent->is(tok::string_literal))) {
-      Current.MustBreakBefore = true;
-    } else {
-      Current.MustBreakBefore = false;
-    }
+    Current.MustBreakBefore = false;
   }
   Current.CanBreakBefore = Current.MustBreakBefore || canBreakBefore(Current);
   if (Current.MustBreakBefore)
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index 28d19d5..17a8dc4 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -1908,6 +1908,15 @@
             "    parameter);",
             format("#define A\n"
                    "/* */someCall(parameter);", getLLVMStyleWithColumns(15)));
+
+  EXPECT_EQ("someFunction(1, /* comment 1 */\n"
+            "             2, /* comment 2 */\n"
+            "             3, /* comment 3 */\n"
+            "             aaaa);",
+            format("someFunction (1,   /* comment 1 */\n"
+                   "                2, /* comment 2 */  \n"
+                   "               3,   /* comment 3 */\n"
+                   "aaaa );", getGoogleStyle()));
 }
 
 TEST_F(FormatTest, FormatStarDependingOnContext) {