Fix several formatting problems.

More specifically:
- Improve formatting of static initializers.
- Fix formatting of lines comments in enums.
- Fix formmating of trailing line comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170316 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index d70442c..5ce1022 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -245,6 +245,19 @@
   EXPECT_EQ("int i  // This is a fancy variable\n    = 5;",
             format("int i  // This is a fancy variable\n= 5;"));
 
+  EXPECT_EQ("enum E {\n"
+            "  // comment\n"
+            "  VAL_A,  // comment\n"
+            "  VAL_B\n"
+            "};",
+            format("enum E{\n// comment\nVAL_A,// comment\nVAL_B};"));
+
+  verifyFormat(
+      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =\n"
+      "    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;  // Trailing comment");
+}
+
+TEST_F(FormatTest, UnderstandsMultiLineComments) {
   verifyFormat("f(/*test=*/ true);");
 }
 
@@ -319,6 +332,15 @@
                "}");
 }
 
+TEST_F(FormatTest, StaticInitializers) {
+  verifyFormat("static SomeClass SC = { 1, 'a' };");
+
+  // FIXME: Format like enums if the static initializer does not fit on a line.
+  verifyFormat(
+      "static SomeClass WithALoooooooooooooooooooongName = { 100000000,\n"
+      "    \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\" };");
+}
+
 //===----------------------------------------------------------------------===//
 // Line break tests.
 //===----------------------------------------------------------------------===//