Author: nico Date: Wed Sep 27 10:57:50 2017 New Revision: 314325 URL: http://llvm.org/viewvc/llvm-project?rev=314325&view=rev Log: 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 Modified: cfe/trunk/lib/Format/FormatTokenLexer.cpp cfe/trunk/lib/Format/TokenAnnotator.cpp cfe/trunk/unittests/Format/FormatTestJava.cpp Modified: cfe/trunk/lib/Format/FormatTokenLexer.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/FormatTokenLexer.cpp?rev=314325&r1=314324&r2=314325&view=diff ============================================================================== --- cfe/trunk/lib/Format/FormatTokenLexer.cpp (original) +++ cfe/trunk/lib/Format/FormatTokenLexer.cpp Wed Sep 27 10:57:50 2017 @@ -96,12 +96,8 @@ void FormatTokenLexer::tryMergePreviousT } 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; } Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/TokenAnnotator.cpp?rev=314325&r1=314324&r2=314325&view=diff ============================================================================== --- cfe/trunk/lib/Format/TokenAnnotator.cpp (original) +++ cfe/trunk/lib/Format/TokenAnnotator.cpp Wed Sep 27 10:57:50 2017 @@ -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::spaceRequiredBetwee 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; Modified: cfe/trunk/unittests/Format/FormatTestJava.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTestJava.cpp?rev=314325&r1=314324&r2=314325&view=diff ============================================================================== --- cfe/trunk/unittests/Format/FormatTestJava.cpp (original) +++ cfe/trunk/unittests/Format/FormatTestJava.cpp Wed Sep 27 10:57:50 2017 @@ -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() {}"); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits