]> granicus.if.org Git - clang/commitdiff
clang-format: [Java] Fix class declaration formatting.
authorDaniel Jasper <djasper@google.com>
Mon, 3 Nov 2014 02:27:28 +0000 (02:27 +0000)
committerDaniel Jasper <djasper@google.com>
Mon, 3 Nov 2014 02:27:28 +0000 (02:27 +0000)
Before:
  @SomeAnnotation()
  abstract
      class aaaaaaaaaaaa extends bbbbbbbbbbbbbbb implements cccccccccccc {
  }

After:
  @SomeAnnotation()
  abstract class aaaaaaaaaaaa extends bbbbbbbbbbbbbbb
      implements cccccccccccc {
  }

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@221121 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 707153242b8965ee617fb9ff5068e2aaa905e0c4..f6fbbba440ea5f2b34f0ef105fc53ba298188fa0 100644 (file)
@@ -428,7 +428,9 @@ unsigned ContinuationIndenter::addTokenOnNewLine(LineState &State,
        !State.Stack.back().AvoidBinPacking) ||
       Previous.Type == TT_BinaryOperator)
     State.Stack.back().BreakBeforeParameter = false;
-  if (Previous.Type == TT_TemplateCloser && Current.NestingLevel == 0)
+  if ((Previous.Type == TT_TemplateCloser ||
+       Previous.Type == TT_JavaAnnotation) &&
+      Current.NestingLevel == 0)
     State.Stack.back().BreakBeforeParameter = false;
   if (NextNonComment->is(tok::question) ||
       (PreviousNonComment && PreviousNonComment->is(tok::question)))
index 5eb6e10554de1b8ef58a67c4232bab1a9b255f67..bebd6cc18d7f4aa8c5b6c5365783d61800670f94 100644 (file)
@@ -1474,6 +1474,11 @@ unsigned TokenAnnotator::splitPenalty(const AnnotatedLine &Line,
       Left.Type == TT_InheritanceColon)
     return 2;
 
+  if (Left.Type == TT_LeadingJavaAnnotation)
+    return 1;
+  if (Style.Language == FormatStyle::LK_Java && Right.TokenText == "implements")
+    return 2;
+
   if (Right.isMemberAccess()) {
     if (Left.is(tok::r_paren) && Left.MatchingParen &&
         Left.MatchingParen->ParameterCount > 0)
@@ -1481,9 +1486,6 @@ unsigned TokenAnnotator::splitPenalty(const AnnotatedLine &Line,
     return 150;
   }
 
-  if (Left.Type == TT_LeadingJavaAnnotation)
-    return 1;
-
   if (Right.Type == TT_TrailingAnnotation &&
       (!Right.Next || Right.Next->isNot(tok::l_paren))) {
     // Moving trailing annotations to the next line is fine for ObjC method
index 96dda9b11b47bd2ea6826deb0fb6d6c26f819301..60111b19edc9f031a46a5890f8edf136bd8d3a0c 100644 (file)
@@ -77,6 +77,11 @@ TEST_F(FormatTestJava, ClassDeclarations) {
                "    implements SomeInterface,\n"
                "               AnotherInterface {}",
                getStyleWithColumns(40));
+  verifyFormat("@SomeAnnotation()\n"
+               "abstract class aaaaaaaaaaaa extends bbbbbbbbbbbbbbb\n"
+               "    implements cccccccccccc {\n"
+               "}",
+               getStyleWithColumns(76));
 }
 
 TEST_F(FormatTestJava, EnumDeclarations) {