]> granicus.if.org Git - clang/commitdiff
Improve understanding of unary operators.
authorDaniel Jasper <djasper@google.com>
Wed, 16 Jan 2013 16:04:06 +0000 (16:04 +0000)
committerDaniel Jasper <djasper@google.com>
Wed, 16 Jan 2013 16:04:06 +0000 (16:04 +0000)
Before: int x = ** a;
After:  int x = **a;

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172619 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 4be41daf005e315c0bd471a8a291b56999badbe9..ebf493c628a328d00732325effa40e80a9d0e890 100644 (file)
@@ -1180,7 +1180,7 @@ private:
         PrevToken->is(tok::l_brace) || PrevToken->is(tok::comma) ||
         PrevToken->is(tok::kw_return) || PrevToken->is(tok::colon) ||
         PrevToken->Type == TT_BinaryOperator ||
-        PrevToken->Type == TT_CastRParen)
+        PrevToken->Type == TT_UnaryOperator || PrevToken->Type == TT_CastRParen)
       return TT_UnaryOperator;
 
     if (PrevToken->FormatTok.Tok.isLiteral() || PrevToken->is(tok::r_paren) ||
index 7d8ed14191f1802b5f64a016117f97451d7283b7..6dd7cad13800ff100515f800902d26822b7f6de8 100644 (file)
@@ -1167,6 +1167,11 @@ TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) {
   verifyGoogleFormat("A<int**, int**> a;");
   verifyGoogleFormat("f(b ? *c : *d);");
   verifyGoogleFormat("int a = b ? *c : *d;");
+  verifyGoogleFormat("Type* t = **x;");
+  verifyGoogleFormat("Type* t = *++*x;");
+  verifyGoogleFormat("*++*x;");
+  verifyGoogleFormat("Type* t = const_cast<T*>(&*x);");
+  verifyGoogleFormat("Type* t = x++ * y;");
 
   verifyFormat("a = *(x + y);");
   verifyFormat("a = &(x + y);");