forked from OSchip/llvm-project
clang-format: [Java] Support formatting qualified annotations.
llvm-svn: 225559
This commit is contained in:
parent
29e464f0df
commit
beb03938e9
|
@ -93,7 +93,8 @@ bool ContinuationIndenter::canBreak(const LineState &State) {
|
|||
const FormatToken &Current = *State.NextToken;
|
||||
const FormatToken &Previous = *Current.Previous;
|
||||
assert(&Previous == Current.Previous);
|
||||
if (!Current.CanBreakBefore && !(State.Stack.back().BreakBeforeClosingBrace &&
|
||||
if (!Current.CanBreakBefore &&
|
||||
!(State.Stack.back().BreakBeforeClosingBrace &&
|
||||
Current.closesBlockTypeList(Style)))
|
||||
return false;
|
||||
// The opening "{" of a braced list has to be on the same line as the first
|
||||
|
@ -196,7 +197,6 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
// Same as above, but for the first "<<" operator.
|
||||
if (Current.is(tok::lessless) && Current.isNot(TT_OverloadedOperator) &&
|
||||
State.Stack.back().BreakBeforeParameter &&
|
||||
|
@ -209,7 +209,8 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {
|
|||
if (Current.NestingLevel == 0 && !Current.isTrailingComment()) {
|
||||
if (Previous.ClosesTemplateDeclaration)
|
||||
return true;
|
||||
if (Previous.is(TT_LeadingJavaAnnotation) && Current.isNot(tok::l_paren))
|
||||
if (Previous.is(TT_LeadingJavaAnnotation) && Current.isNot(tok::l_paren) &&
|
||||
Current.isNot(TT_LeadingJavaAnnotation))
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -861,6 +861,11 @@ private:
|
|||
if (PreviousNoComment &&
|
||||
PreviousNoComment->isOneOf(tok::comma, tok::l_brace))
|
||||
Current.Type = TT_DesignatedInitializerPeriod;
|
||||
else if (Style.Language == FormatStyle::LK_Java && Current.Previous &&
|
||||
Current.Previous->isOneOf(TT_JavaAnnotation,
|
||||
TT_LeadingJavaAnnotation)) {
|
||||
Current.Type = Current.Previous->Type;
|
||||
}
|
||||
} else if (Current.isOneOf(tok::identifier, tok::kw_const) &&
|
||||
Current.Previous &&
|
||||
!Current.Previous->isOneOf(tok::equal, tok::at) &&
|
||||
|
@ -868,8 +873,8 @@ private:
|
|||
// Line.MightBeFunctionDecl can only be true after the parentheses of a
|
||||
// function declaration have been found.
|
||||
Current.Type = TT_TrailingAnnotation;
|
||||
} else if (Style.Language == FormatStyle::LK_Java && Current.Previous &&
|
||||
Current.Previous->is(tok::at) &&
|
||||
} else if (Style.Language == FormatStyle::LK_Java && Current.Previous) {
|
||||
if (Current.Previous->is(tok::at) &&
|
||||
Current.isNot(Keywords.kw_interface)) {
|
||||
const FormatToken &AtToken = *Current.Previous;
|
||||
const FormatToken *Previous = AtToken.getPreviousNonComment();
|
||||
|
@ -877,6 +882,11 @@ private:
|
|||
Current.Type = TT_LeadingJavaAnnotation;
|
||||
else
|
||||
Current.Type = TT_JavaAnnotation;
|
||||
} else if (Current.Previous->is(tok::period) &&
|
||||
Current.Previous->isOneOf(TT_JavaAnnotation,
|
||||
TT_LeadingJavaAnnotation)) {
|
||||
Current.Type = Current.Previous->Type;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1281,8 +1291,8 @@ private:
|
|||
|
||||
} // end anonymous namespace
|
||||
|
||||
void
|
||||
TokenAnnotator::setCommentLineLevels(SmallVectorImpl<AnnotatedLine *> &Lines) {
|
||||
void TokenAnnotator::setCommentLineLevels(
|
||||
SmallVectorImpl<AnnotatedLine *> &Lines) {
|
||||
const AnnotatedLine *NextNonCommentLine = nullptr;
|
||||
for (SmallVectorImpl<AnnotatedLine *>::reverse_iterator I = Lines.rbegin(),
|
||||
E = Lines.rend();
|
||||
|
@ -1408,8 +1418,8 @@ void TokenAnnotator::calculateFormattingInformation(AnnotatedLine &Line) {
|
|||
Current->MustBreakBefore =
|
||||
Current->MustBreakBefore || mustBreakBefore(Line, *Current);
|
||||
|
||||
if (Style.AlwaysBreakAfterDefinitionReturnType &&
|
||||
InFunctionDecl && Current->is(TT_FunctionDeclarationName) &&
|
||||
if (Style.AlwaysBreakAfterDefinitionReturnType && InFunctionDecl &&
|
||||
Current->is(TT_FunctionDeclarationName) &&
|
||||
!Line.Last->isOneOf(tok::semi, tok::comment)) // Only for definitions.
|
||||
// FIXME: Line.Last points to other characters than tok::semi
|
||||
// and tok::lbrace.
|
||||
|
@ -1897,7 +1907,8 @@ bool TokenAnnotator::mustBreakBefore(const AnnotatedLine &Line,
|
|||
Left.NestingLevel == 0)
|
||||
return true;
|
||||
} else if (Style.Language == FormatStyle::LK_Java) {
|
||||
if (Left.is(TT_LeadingJavaAnnotation) && Right.isNot(tok::l_paren) &&
|
||||
if (Left.is(TT_LeadingJavaAnnotation) &&
|
||||
Right.isNot(TT_LeadingJavaAnnotation) && Right.isNot(tok::l_paren) &&
|
||||
Line.Last->is(tok::l_brace))
|
||||
return true;
|
||||
if (Right.is(tok::plus) && Left.is(tok::string_literal) && Right.Next &&
|
||||
|
|
|
@ -242,6 +242,9 @@ TEST_F(FormatTestJava, Annotations) {
|
|||
verifyFormat("@Override // comment\n"
|
||||
"@Nullable\n"
|
||||
"public String getNameIfPresent() {}");
|
||||
verifyFormat("@java.lang.Override // comment\n"
|
||||
"@Nullable\n"
|
||||
"public String getNameIfPresent() {}");
|
||||
|
||||
verifyFormat("@SuppressWarnings(value = \"unchecked\")\n"
|
||||
"public void doSomething() {}");
|
||||
|
@ -255,6 +258,7 @@ TEST_F(FormatTestJava, Annotations) {
|
|||
"});");
|
||||
|
||||
verifyFormat("void SomeFunction(@Nullable String something) {}");
|
||||
verifyFormat("void SomeFunction(@org.llvm.Nullable String something) {}");
|
||||
|
||||
verifyFormat("@Partial @Mock DataLoader loader;");
|
||||
verifyFormat("@SuppressWarnings(value = \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\")\n"
|
||||
|
@ -262,10 +266,16 @@ TEST_F(FormatTestJava, Annotations) {
|
|||
|
||||
verifyFormat("@SomeAnnotation(\"With some really looooooooooooooong text\")\n"
|
||||
"private static final long something = 0L;");
|
||||
verifyFormat("@org.llvm.Qualified(\"With some really looooooooooong text\")\n"
|
||||
"private static final long something = 0L;");
|
||||
verifyFormat("@Mock\n"
|
||||
"DataLoader loooooooooooooooooooooooader =\n"
|
||||
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;",
|
||||
getStyleWithColumns(60));
|
||||
verifyFormat("@org.llvm.QualifiedMock\n"
|
||||
"DataLoader loooooooooooooooooooooooader =\n"
|
||||
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;",
|
||||
getStyleWithColumns(60));
|
||||
}
|
||||
|
||||
TEST_F(FormatTestJava, Generics) {
|
||||
|
|
Loading…
Reference in New Issue