Improve handling of comments in static initializers.

Also adding more tests.

We can now keep the formatting of something like:

static SomeType type = { aaaaaaaaaaaaaaaaaaaa, /* comment */
                         aaaaaaaaaaaaaaaaaaaa /* comment */,
                         /* comment */ aaaaaaaaaaaaaaaaaaaa,
                         aaaaaaaaaaaaaaaaaaaa, // comment
                         aaaaaaaaaaaaaaaaaaaa };

Note that the comment in the first line is handled like a trailing line comment
as that is likely what the user intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172711 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index bd0fcbc..190eaba 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -359,6 +359,44 @@
 
 TEST_F(FormatTest, UnderstandsMultiLineComments) {
   verifyFormat("f(/*test=*/ true);");
+  EXPECT_EQ(
+      "f(aaaaaaaaaaaaaaaaaaaaaaaaa, /* Trailing comment for aa... */\n"
+      "  bbbbbbbbbbbbbbbbbbbbbbbbb);",
+      format("f(aaaaaaaaaaaaaaaaaaaaaaaaa ,  /* Trailing comment for aa... */\n"
+             "  bbbbbbbbbbbbbbbbbbbbbbbbb);"));
+  EXPECT_EQ(
+      "f(aaaaaaaaaaaaaaaaaaaaaaaaa,\n"
+      "  /* Leading comment for bb... */ bbbbbbbbbbbbbbbbbbbbbbbbb);",
+      format("f(aaaaaaaaaaaaaaaaaaaaaaaaa    ,   \n"
+             "/* Leading comment for bb... */   bbbbbbbbbbbbbbbbbbbbbbbbb);"));
+}
+
+TEST_F(FormatTest, CommentsInStaticInitializers) {
+  EXPECT_EQ(
+      "static SomeType type = { aaaaaaaaaaaaaaaaaaaa, /* comment */\n"
+      "                         aaaaaaaaaaaaaaaaaaaa /* comment */,\n"
+      "                         /* comment */ aaaaaaaaaaaaaaaaaaaa,\n"
+      "                         aaaaaaaaaaaaaaaaaaaa, // comment\n"
+      "                         aaaaaaaaaaaaaaaaaaaa };",
+      format("static SomeType type = { aaaaaaaaaaaaaaaaaaaa  ,  /* comment */\n"
+             "                   aaaaaaaaaaaaaaaaaaaa   /* comment */ ,\n"
+             "                     /* comment */   aaaaaaaaaaaaaaaaaaaa ,\n"
+             "              aaaaaaaaaaaaaaaaaaaa ,   // comment\n"
+             "                  aaaaaaaaaaaaaaaaaaaa };"));
+  verifyFormat("static SomeType type = { aaaaaaaaaaa, // comment for aa...\n"
+               "                         bbbbbbbbbbb, ccccccccccc };");
+  verifyFormat("static SomeType type = { aaaaaaaaaaa,\n"
+               "                         // comment for bb....\n"
+               "                         bbbbbbbbbbb, ccccccccccc };");
+  verifyGoogleFormat(
+      "static SomeType type = { aaaaaaaaaaa,  // comment for aa...\n"
+      "                         bbbbbbbbbbb,\n"
+      "                         ccccccccccc };");
+  verifyGoogleFormat("static SomeType type = { aaaaaaaaaaa,\n"
+                     "                         // comment for bb....\n"
+                     "                         bbbbbbbbbbb,\n"
+                     "                         ccccccccccc };");
+
 }
 
 //===----------------------------------------------------------------------===//