]> granicus.if.org Git - clang/commitdiff
clang-format: Understand sequenced casts.
authorDaniel Jasper <djasper@google.com>
Mon, 25 Aug 2014 09:36:07 +0000 (09:36 +0000)
committerDaniel Jasper <djasper@google.com>
Mon, 25 Aug 2014 09:36:07 +0000 (09:36 +0000)
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

lib/Format/TokenAnnotator.cpp
unittests/Format/FormatTest.cpp

index 017a8404ba445af5d7c299179178ac9e96713670..4c6be9f98c1dd2340d8c5815774252ef9c341dc4 100644 (file)
@@ -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)
index 70b02ebc8016622a1c96b761dead36590148ad51..14c221bad95037feed9d249cfc2cde7ceb03768e 100644 (file)
@@ -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) {}");