]> granicus.if.org Git - clang/commitdiff
clang-format: Fix incorrect */& classification.
authorDaniel Jasper <djasper@google.com>
Wed, 13 May 2015 12:54:30 +0000 (12:54 +0000)
committerDaniel Jasper <djasper@google.com>
Wed, 13 May 2015 12:54:30 +0000 (12:54 +0000)
Before:
  void f() { f(new a(), c *d); }

After:
  void f() { f(new a(), c * d); }

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

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

index 3e51417d2cdddd79287f5a156475e37abd5eea52..130e2c3b2ac71eca84ff8dc50942c4b97d75e477 100644 (file)
@@ -234,6 +234,10 @@ private:
         MightBeObjCForRangeLoop = false;
       if (MightBeObjCForRangeLoop && CurrentToken->is(Keywords.kw_in))
         CurrentToken->Type = TT_ObjCForIn;
+      // When we discover a 'new', we set CanBeExpression to 'false' in order to
+      // parse the type correctly. Reset that after a comma.
+      if (CurrentToken->is(tok::comma))
+        Contexts.back().CanBeExpression = true;
 
       FormatToken *Tok = CurrentToken;
       if (!consumeToken())
index d6f0c08bf0a8225ae0ab80628e50b6040f4f1ffa..c44708fbf6c3af6bf11c2ef34a8edb7d260552ed 100644 (file)
@@ -5486,6 +5486,7 @@ TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) {
   verifyFormat("Constructor() : a(a), area(a, width * height) {}");
   verifyGoogleFormat("MACRO Constructor(const int& i) : a(a), b(b) {}");
   verifyFormat("void f() { f(a, c * d); }");
+  verifyFormat("void f() { f(new a(), c * d); }");
 
   verifyIndependentOfContext("InvalidRegions[*R] = 0;");