clang-format: [Java] Always break after annotations of multiline decls.

Before:
  @Mock DataLoader loooooooooooooooooooooooader =
      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;

After:
  @Mock
  DataLoader loooooooooooooooooooooooader =
      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;

llvm-svn: 223688
This commit is contained in:
Daniel Jasper 2014-12-08 20:08:04 +00:00
parent 818a3676aa
commit 211e1329cc
3 changed files with 10 additions and 5 deletions

View File

@ -206,9 +206,12 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {
if (Current.is(TT_SelectorName) && State.Stack.back().ObjCSelectorNameFound &&
State.Stack.back().BreakBeforeParameter)
return true;
if (Previous.ClosesTemplateDeclaration && Current.NestingLevel == 0 &&
!Current.isTrailingComment())
return true;
if (Current.NestingLevel == 0 && !Current.isTrailingComment()) {
if (Previous.ClosesTemplateDeclaration)
return true;
if (Previous.is(TT_LeadingJavaAnnotation) && Current.isNot(tok::l_paren))
return true;
}
// If the return type spans multiple lines, wrap before the function name.
if (Current.isOneOf(TT_FunctionDeclarationName ,tok::kw_operator) &&

View File

@ -1474,8 +1474,6 @@ unsigned TokenAnnotator::splitPenalty(const AnnotatedLine &Line,
return 0;
if (Style.Language == FormatStyle::LK_Java) {
if (Left.is(TT_LeadingJavaAnnotation))
return 1;
if (Right.isOneOf(Keywords.kw_extends, Keywords.kw_throws))
return 1;
if (Right.is(Keywords.kw_implements))

View File

@ -262,6 +262,10 @@ TEST_F(FormatTestJava, Annotations) {
verifyFormat("@SomeAnnotation(\"With some really looooooooooooooong text\")\n"
"private static final long something = 0L;");
verifyFormat("@Mock\n"
"DataLoader loooooooooooooooooooooooader =\n"
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;",
getStyleWithColumns(60));
}
TEST_F(FormatTestJava, Generics) {