Formatter: Format ObjC static and instance methods consistently, add a test for that.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172254 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index cee587b..77fba1f 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -1342,8 +1342,9 @@
         Last->Tok.isNot(tok::kw_do) && Last->Tok.isNot(tok::r_brace) &&
         Last->Tok.isNot(tok::kw_else) && Last->Tok.isNot(tok::kw_try) &&
         Last->Tok.isNot(tok::kw_catch) && Last->Tok.isNot(tok::kw_for) &&
-        // This gets rid of all ObjC @ keywords and - based definitions.
-        Last->Tok.isNot(tok::at) && Last->Tok.isNot(tok::minus);
+        // This gets rid of all ObjC @ keywords and methods.
+        Last->Tok.isNot(tok::at) && Last->Tok.isNot(tok::minus) &&
+        Last->Tok.isNot(tok::plus);
     while (!Last->Children.empty())
       Last = &Last->Children.back();
     if (!Last->Tok.is(tok::l_brace))
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index a0cfeee..2c1c9ee 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -1388,6 +1388,9 @@
                "- (int)answerWith:(int)i {\n"
                "  return i;\n"
                "}\n"
+               "+ (int)answerWith:(int)i {\n"
+               "  return i;\n"
+               "}\n"
                "@end");
 
   verifyFormat("@implementation Foo\n"
@@ -1397,6 +1400,7 @@
 
   verifyFormat("@implementation Foo : Bar\n"
                "+ (id)init {}\n"
+               "- (void)foo {}\n"
                "@end");
 
   verifyFormat("@implementation Foo {\n"