forked from OSchip/llvm-project
clang-format/java: Unbreak genenrics formatting after r299952.
https://reviews.llvm.org/rL299952 merged '>>>' tokens into a single JavaRightLogicalShift token. This broke formatting of generics nested more than two deep, e.g. Foo<Bar<Baz>>> because the '>>>' now weren't three '>' for parseAngle(). Luckily, just deleting JavaRightLogicalShift fixes things without breaking the test added in r299952, so do that. https://reviews.llvm.org/D38291 llvm-svn: 314325
This commit is contained in:
parent
022cc6c41e
commit
b9b1867519
|
@ -96,12 +96,8 @@ void FormatTokenLexer::tryMergePreviousTokens() {
|
|||
}
|
||||
|
||||
if (Style.Language == FormatStyle::LK_Java) {
|
||||
static const tok::TokenKind JavaRightLogicalShift[] = {
|
||||
tok::greater, tok::greater, tok::greater};
|
||||
static const tok::TokenKind JavaRightLogicalShiftAssign[] = {
|
||||
tok::greater, tok::greater, tok::greaterequal};
|
||||
if (tryMergeTokens(JavaRightLogicalShift, TT_BinaryOperator))
|
||||
return;
|
||||
if (tryMergeTokens(JavaRightLogicalShiftAssign, TT_BinaryOperator))
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@ private:
|
|||
if (NonTemplateLess.count(CurrentToken->Previous))
|
||||
return false;
|
||||
|
||||
const FormatToken &Previous = *CurrentToken->Previous;
|
||||
const FormatToken &Previous = *CurrentToken->Previous; // The '<'.
|
||||
if (Previous.Previous) {
|
||||
if (Previous.Previous->Tok.isLiteral())
|
||||
return false;
|
||||
|
@ -2323,7 +2323,7 @@ bool TokenAnnotator::spaceRequiredBetween(const AnnotatedLine &Line,
|
|||
if (Left.is(TT_TemplateCloser) && Left.MatchingParen &&
|
||||
Left.MatchingParen->Previous &&
|
||||
Left.MatchingParen->Previous->is(tok::period))
|
||||
// A.<B>DoSomething();
|
||||
// A.<B<C<...>>>DoSomething();
|
||||
return false;
|
||||
if (Left.is(TT_TemplateCloser) && Right.is(tok::l_square))
|
||||
return false;
|
||||
|
|
|
@ -333,6 +333,11 @@ TEST_F(FormatTestJava, Generics) {
|
|||
verifyFormat("Iterable<? extends SomeObject> a;");
|
||||
|
||||
verifyFormat("A.<B>doSomething();");
|
||||
verifyFormat("A.<B<C>>doSomething();");
|
||||
verifyFormat("A.<B<C<D>>>doSomething();");
|
||||
verifyFormat("A.<B<C<D<E>>>>doSomething();");
|
||||
|
||||
verifyFormat("OrderedPair<String, List<Box<Integer>>> p = null;");
|
||||
|
||||
verifyFormat("@Override\n"
|
||||
"public Map<String, ?> getAll() {}");
|
||||
|
|
Loading…
Reference in New Issue