From: Daniel Jasper Date: Tue, 1 Nov 2016 06:23:05 +0000 (+0000) Subject: clang-format: Fix incorrect binary operator detection. X-Git-Tag: llvmorg-4.0.0-rc1~5774 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3ade3be2a1e97fdac987638cf9470930f61f49d5;p=platform%2Fupstream%2Fllvm.git clang-format: Fix incorrect binary operator detection. Before: int x = f(* + [] {}); After: int x = f(*+[] {}); llvm-svn: 285671 --- diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 5a0d592..129fe84 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -1310,7 +1310,7 @@ private: TokenType determinePlusMinusCaretUsage(const FormatToken &Tok) { const FormatToken *PrevToken = Tok.getPreviousNonComment(); - if (!PrevToken || PrevToken->is(TT_CastRParen)) + if (!PrevToken || PrevToken->isOneOf(TT_CastRParen, TT_UnaryOperator)) return TT_UnaryOperator; // Use heuristics to recognize unary operators. diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index b95a29f..8fe835e 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -10954,6 +10954,7 @@ TEST_F(FormatTest, FormatsLambdas) { verifyFormat("int c = [&a, &a, a] { [=, a, b, &c] { return b++; }(); }();\n"); verifyFormat("auto c = {[&a, &a, a] { [=, a, b, &c] { return b++; }(); }}\n"); verifyFormat("auto c = {[&a, &a, a] { [=, a, b, &c] {}(); }}\n"); + verifyFormat("int x = f(*+[] {});"); verifyFormat("void f() {\n" " other(x.begin(), x.end(), [&](int, int) { return 1; });\n" "}\n");