diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -2351,7 +2351,8 @@ return TT_BinaryOperator; if (!NextToken || - NextToken->isOneOf(tok::arrow, tok::equal, tok::kw_noexcept) || + NextToken->isOneOf(tok::arrow, tok::equal, tok::kw_noexcept, tok::comma, + tok::r_paren) || NextToken->canBePointerOrReferenceQualifier() || (NextToken->is(tok::l_brace) && !NextToken->getNextNonComment())) { return TT_PointerOrReference; diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -2132,6 +2132,10 @@ verifyFormat("int *a = f1();", Style); verifyFormat("int &b = f2();", Style); verifyFormat("int &&c = f3();", Style); + verifyFormat("int f3() { return sizeof(Foo &); }", Style); + verifyFormat("int f4() { return sizeof(Foo &&); }", Style); + verifyFormat("void f5() { int f6(Foo &, Bar &); }", Style); + verifyFormat("void f5() { int f6(Foo &&, Bar &&); }", Style); verifyFormat("for (auto a = 0, b = 0; const auto &c : {1, 2, 3})", Style); verifyFormat("for (auto a = 0, b = 0; const int &c : {1, 2, 3})", Style); verifyFormat("for (auto a = 0, b = 0; const Foo &c : {1, 2, 3})", Style); @@ -2171,6 +2175,10 @@ verifyFormat("int* a = f1();", Style); verifyFormat("int& b = f2();", Style); verifyFormat("int&& c = f3();", Style); + verifyFormat("int f3() { return sizeof(Foo&); }", Style); + verifyFormat("int f4() { return sizeof(Foo&&); }", Style); + verifyFormat("void f5() { int f6(Foo&, Bar&); }", Style); + verifyFormat("void f5() { int f6(Foo&&, Bar&&); }", Style); verifyFormat("for (auto a = 0, b = 0; const auto& c : {1, 2, 3})", Style); verifyFormat("for (auto a = 0, b = 0; const int& c : {1, 2, 3})", Style); verifyFormat("for (auto a = 0, b = 0; const Foo& c : {1, 2, 3})", Style); @@ -2211,6 +2219,10 @@ verifyFormat("int *a = f1();", Style); verifyFormat("int& b = f2();", Style); verifyFormat("int&& c = f3();", Style); + verifyFormat("int f3() { return sizeof(Foo&); }", Style); + verifyFormat("int f4() { return sizeof(Foo&&); }", Style); + verifyFormat("void f5() { int f6(Foo&, Bar&); }", Style); + verifyFormat("void f5() { int f6(Foo&&, Bar&&); }", Style); verifyFormat("for (auto a = 0, b = 0; const Foo *c : {1, 2, 3})", Style); verifyFormat("for (int a = 0, b = 0; const Foo *c : {1, 2, 3})", Style); verifyFormat("for (int a = 0, b++; const Foo *c : {1, 2, 3})", Style); @@ -2232,6 +2244,10 @@ verifyFormat("int* a = f1();", Style); verifyFormat("int & b = f2();", Style); verifyFormat("int && c = f3();", Style); + verifyFormat("int f3() { return sizeof(Foo &); };", Style); + verifyFormat("int f4() { return sizeof(Foo &&); };", Style); + verifyFormat("void f5() { int f6(Foo &, Bar &); };", Style); + verifyFormat("void f5() { int f6(Foo &&, Bar &&); };", Style); verifyFormat("for (auto a = 0, b = 0; const auto & c : {1, 2, 3})", Style); verifyFormat("for (auto a = 0, b = 0; const int & c : {1, 2, 3})", Style); verifyFormat("for (auto a = 0, b = 0; const Foo & c : {1, 2, 3})", Style); @@ -2268,6 +2284,10 @@ verifyFormat("int * a = f1();", Style); verifyFormat("int &b = f2();", Style); verifyFormat("int &&c = f3();", Style); + verifyFormat("int f3() { return sizeof(Foo &); };", Style); + verifyFormat("int f4() { return sizeof(Foo &&); };", Style); + verifyFormat("void f5() { int f6(Foo &, Bar &); };", Style); + verifyFormat("void f5() { int f6(Foo &&, Bar &&); };", Style); verifyFormat("for (auto a = 0, b = 0; const Foo * c : {1, 2, 3})", Style); verifyFormat("for (int a = 0, b = 0; const Foo * c : {1, 2, 3})", Style); verifyFormat("for (int a = 0, b++; const Foo * c : {1, 2, 3})", Style); @@ -8981,7 +9001,7 @@ " \"looooooooooooooooooooooooooooooooooooooooooooooooong literal\");"); verifyFormat("someFunction(\"Always break between multi-line\"\n" " \" string literals\",\n" - " and, other, parameters);"); + " also, other, parameters);"); EXPECT_EQ("fun + \"1243\" /* comment */\n" " \"5678\";", format("fun + \"1243\" /* comment */\n"