red1bluelost updated this revision to Diff 474615. red1bluelost added a comment.
Adds tests for the TokenAnnotator as well. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D137755/new/ https://reviews.llvm.org/D137755 Files: clang/lib/Format/TokenAnnotator.cpp clang/unittests/Format/FormatTest.cpp clang/unittests/Format/TokenAnnotatorTest.cpp
Index: clang/unittests/Format/TokenAnnotatorTest.cpp =================================================================== --- clang/unittests/Format/TokenAnnotatorTest.cpp +++ clang/unittests/Format/TokenAnnotatorTest.cpp @@ -157,6 +157,24 @@ Tokens = annotate("if (Foo* Bar = getObj())"); ASSERT_EQ(Tokens.size(), 11u) << Tokens; EXPECT_TOKEN(Tokens[3], tok::star, TT_PointerOrReference); + + Tokens = annotate("int f3() { return sizeof(Foo&); }"); + ASSERT_EQ(Tokens.size(), 14u) << Tokens; + EXPECT_TOKEN(Tokens[9], tok::amp, TT_PointerOrReference); + + Tokens = annotate("int f4() { return sizeof(Foo&&); }"); + ASSERT_EQ(Tokens.size(), 14u) << Tokens; + EXPECT_TOKEN(Tokens[9], tok::ampamp, TT_PointerOrReference); + + Tokens = annotate("void f5() { int f6(Foo&, Bar&); }"); + ASSERT_EQ(Tokens.size(), 17u) << Tokens; + EXPECT_TOKEN(Tokens[9], tok::amp, TT_PointerOrReference); + EXPECT_TOKEN(Tokens[12], tok::amp, TT_PointerOrReference); + + Tokens = annotate("void f7() { int f8(Foo&&, Bar&&); }"); + ASSERT_EQ(Tokens.size(), 17u) << Tokens; + EXPECT_TOKEN(Tokens[9], tok::ampamp, TT_PointerOrReference); + EXPECT_TOKEN(Tokens[12], tok::ampamp, TT_PointerOrReference); } TEST_F(TokenAnnotatorTest, UnderstandsUsesOfPlusAndMinus) { Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ 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" Index: clang/lib/Format/TokenAnnotator.cpp =================================================================== --- clang/lib/Format/TokenAnnotator.cpp +++ 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;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits