clang-format: Fix unary operator detection.
authorDaniel Jasper <djasper@google.com>
Wed, 7 Jan 2015 12:19:53 +0000 (12:19 +0000)
committerDaniel Jasper <djasper@google.com>
Wed, 7 Jan 2015 12:19:53 +0000 (12:19 +0000)
Before:
  ** outparam = 1;

After:
  **outparam = 1;

llvm-svn: 225349

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

index 331776c..8966ab2 100644 (file)
@@ -741,7 +741,8 @@ private:
 
   void modifyContext(const FormatToken &Current) {
     if (Current.getPrecedence() == prec::Assignment &&
-        !Line.First->isOneOf(tok::kw_template, tok::kw_using) &&
+        !Line.First->isOneOf(tok::kw_template, tok::kw_using,
+                             TT_UnaryOperator) &&
         (!Current.Previous || Current.Previous->isNot(tok::kw_operator))) {
       Contexts.back().IsExpression = true;
       for (FormatToken *Previous = Current.Previous;
@@ -752,11 +753,10 @@ private:
           if (!Previous)
             break;
         }
-        if ((Previous->isOneOf(TT_BinaryOperator, TT_UnaryOperator)) &&
+        if (Previous->isOneOf(TT_BinaryOperator, TT_UnaryOperator) &&
             Previous->isOneOf(tok::star, tok::amp) && Previous->Previous &&
-            Previous->Previous->isNot(tok::equal)) {
+            Previous->Previous->isNot(tok::equal))
           Previous->Type = TT_PointerOrReference;
-        }
       }
     } else if (Current.isOneOf(tok::kw_return, tok::kw_throw)) {
       Contexts.back().IsExpression = true;
index 66835d7..a0f4503 100644 (file)
@@ -5164,6 +5164,7 @@ TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) {
       "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
       "    aaaaaaaaaaaaaaaaaaaaaaaaaaaa, *aaaaaaaaaaaaaaaaaaaaaaaaaaaaa);");
 
+  verifyGoogleFormat("**outparam = 1;");
   verifyGoogleFormat("int main(int argc, char** argv) {}");
   verifyGoogleFormat("A<int*> a;");
   verifyGoogleFormat("A<int**> a;");