]> granicus.if.org Git - clang/commitdiff
clang-format: Fix unary operator detection in corner case.
authorDaniel Jasper <djasper@google.com>
Fri, 29 Aug 2014 12:54:38 +0000 (12:54 +0000)
committerDaniel Jasper <djasper@google.com>
Fri, 29 Aug 2014 12:54:38 +0000 (12:54 +0000)
Before:
  decltype(* ::std::declval<const T &>()) void F();

After:
  decltype(*::std::declval<const T &>()) void F();

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

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

index ac95f72b60faedeba80ed77ee39f946258a5ed6d..8b62c97a9d5e7e737a1a22e5149ebe0a00d57a7e 100644 (file)
@@ -925,8 +925,7 @@ private:
     if (!NextToken || NextToken->is(tok::l_brace))
       return TT_Unknown;
 
-    if (PrevToken->is(tok::coloncolon) ||
-        (PrevToken->is(tok::l_paren) && !IsExpression))
+    if (PrevToken->is(tok::coloncolon))
       return TT_PointerOrReference;
 
     if (PrevToken->isOneOf(tok::l_paren, tok::l_square, tok::l_brace,
index 7f1cc5a82983b6e2c7c9318ee189454dc68a7b3d..451e8342697b12ff64f20500606560209d08a9e4 100644 (file)
@@ -4931,6 +4931,7 @@ TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) {
   verifyFormat("vector<a * b> v;");
   verifyFormat("foo<b && false>();");
   verifyFormat("foo<b & 1>();");
+  verifyFormat("decltype(*::std::declval<const T &>()) void F();");
 
   verifyIndependentOfContext("MACRO(int *i);");
   verifyIndependentOfContext("MACRO(auto *a);");