From: Daniel Jasper Date: Mon, 25 Aug 2014 09:36:07 +0000 (+0000) Subject: clang-format: Understand sequenced casts. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=89692ccf3dbc16ca84efae4378d0588123f192b8;p=clang clang-format: Understand sequenced casts. This fixed llvm.org/PR20712. Before: int i = (int)(int) -2; After: int i = (int)(int)-2; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216378 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index 017a8404ba..4c6be9f98c 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -853,8 +853,9 @@ private: FormatToken *LeftOfParens = nullptr; if (Tok.MatchingParen) LeftOfParens = Tok.MatchingParen->getPreviousNonComment(); - if (LeftOfParens && LeftOfParens->is(tok::r_paren)) - return false; + if (LeftOfParens && LeftOfParens->is(tok::r_paren) && + LeftOfParens->MatchingParen) + LeftOfParens = LeftOfParens->MatchingParen->Previous; if (LeftOfParens && LeftOfParens->is(tok::r_square) && LeftOfParens->MatchingParen && LeftOfParens->MatchingParen->Type == TT_LambdaLSquare) diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 70b02ebc80..14c221bad9 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -5057,6 +5057,7 @@ TEST_F(FormatTest, FormatsCasts) { verifyFormat("my_int a = (my_int *)1;"); verifyFormat("my_int a = (const my_int)-1;"); verifyFormat("my_int a = (const my_int *)-1;"); + verifyFormat("my_int a = (my_int)(my_int)-1;"); // FIXME: single value wrapped with paren will be treated as cast. verifyFormat("void f(int i = (kValue)*kMask) {}");