clang-format: [Java] Don't let annotations confuse return type analysis.
authorDaniel Jasper <djasper@google.com>
Wed, 14 Jan 2015 10:00:20 +0000 (10:00 +0000)
committerDaniel Jasper <djasper@google.com>
Wed, 14 Jan 2015 10:00:20 +0000 (10:00 +0000)
Before:
  @Test
  ReturnType
  doSomething(String aaaaaaaaaaaaa, String bbbbbbbbbbbbbbb) {}

After:
  @Test
  ReturnType doSomething(
      String aaaaaaaaaaaaa, String bbbbbbbbbbbbbbb) {}

llvm-svn: 225964

clang/lib/Format/TokenAnnotator.cpp
clang/unittests/Format/FormatTestJava.cpp

index 351c6fa..b2f9bd2 100644 (file)
@@ -900,6 +900,9 @@ private:
     if (Tok.isNot(tok::identifier) || !Tok.Previous)
       return false;
 
+    if (Tok.Previous->is(TT_LeadingJavaAnnotation))
+        return false;
+
     // Skip "const" as it does not have an influence on whether this is a name.
     FormatToken *PreviousNotConst = Tok.Previous;
     while (PreviousNotConst && PreviousNotConst->is(tok::kw_const))
index 39abc7b..e0f2b51 100644 (file)
@@ -283,6 +283,10 @@ TEST_F(FormatTestJava, Annotations) {
                "    aaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaa)\n"
                "int i;",
                getStyleWithColumns(50));
+  verifyFormat("@Test\n"
+               "ReturnType doSomething(\n"
+               "    String aaaaaaaaaaaaa, String bbbbbbbbbbbbbbb) {}",
+               getStyleWithColumns(60));
 }
 
 TEST_F(FormatTestJava, Generics) {