@@ -42,6 +42,8 @@ class TokenAnnotatorTest : public testing::Test {
4242 EXPECT_EQ ((FormatTok)->getPrecedence (), Prec) << *(FormatTok)
4343#define EXPECT_BRACE_KIND (FormatTok, Kind ) \
4444 EXPECT_EQ (FormatTok->getBlockKind (), Kind) << *(FormatTok)
45+ #define EXPECT_SPLIT_PENALTY (FormatTok, Penalty ) \
46+ EXPECT_EQ (FormatTok->SplitPenalty, Penalty) << *(FormatTok)
4547#define EXPECT_TOKEN (FormatTok, Kind, Type ) \
4648 do { \
4749 EXPECT_TOKEN_KIND (FormatTok, Kind); \
@@ -1717,21 +1719,21 @@ TEST_F(TokenAnnotatorTest, UnderstandsLambdas) {
17171719 ASSERT_EQ (Tokens.size (), 9u ) << Tokens;
17181720 EXPECT_TOKEN (Tokens[0 ], tok::l_square, TT_LambdaLSquare);
17191721 EXPECT_TOKEN (Tokens[2 ], tok::l_paren, TT_LambdaDefinitionLParen);
1720- EXPECT_TOKEN (Tokens[4 ], tok::arrow, TT_TrailingReturnArrow );
1722+ EXPECT_TOKEN (Tokens[4 ], tok::arrow, TT_LambdaArrow );
17211723 EXPECT_TOKEN (Tokens[6 ], tok::l_brace, TT_LambdaLBrace);
17221724
17231725 Tokens = annotate (" []() -> auto & {}" );
17241726 ASSERT_EQ (Tokens.size (), 10u ) << Tokens;
17251727 EXPECT_TOKEN (Tokens[0 ], tok::l_square, TT_LambdaLSquare);
17261728 EXPECT_TOKEN (Tokens[2 ], tok::l_paren, TT_LambdaDefinitionLParen);
1727- EXPECT_TOKEN (Tokens[4 ], tok::arrow, TT_TrailingReturnArrow );
1729+ EXPECT_TOKEN (Tokens[4 ], tok::arrow, TT_LambdaArrow );
17281730 EXPECT_TOKEN (Tokens[7 ], tok::l_brace, TT_LambdaLBrace);
17291731
17301732 Tokens = annotate (" []() -> auto * {}" );
17311733 ASSERT_EQ (Tokens.size (), 10u ) << Tokens;
17321734 EXPECT_TOKEN (Tokens[0 ], tok::l_square, TT_LambdaLSquare);
17331735 EXPECT_TOKEN (Tokens[2 ], tok::l_paren, TT_LambdaDefinitionLParen);
1734- EXPECT_TOKEN (Tokens[4 ], tok::arrow, TT_TrailingReturnArrow );
1736+ EXPECT_TOKEN (Tokens[4 ], tok::arrow, TT_LambdaArrow );
17351737 EXPECT_TOKEN (Tokens[7 ], tok::l_brace, TT_LambdaLBrace);
17361738
17371739 Tokens = annotate (" [] {}" );
@@ -1747,20 +1749,20 @@ TEST_F(TokenAnnotatorTest, UnderstandsLambdas) {
17471749 Tokens = annotate (" [] -> auto {}" );
17481750 ASSERT_EQ (Tokens.size (), 7u ) << Tokens;
17491751 EXPECT_TOKEN (Tokens[0 ], tok::l_square, TT_LambdaLSquare);
1750- EXPECT_TOKEN (Tokens[2 ], tok::arrow, TT_TrailingReturnArrow );
1752+ EXPECT_TOKEN (Tokens[2 ], tok::arrow, TT_LambdaArrow );
17511753 EXPECT_TOKEN (Tokens[4 ], tok::l_brace, TT_LambdaLBrace);
17521754
17531755 Tokens = annotate (" [] -> struct S { return {}; }" );
17541756 ASSERT_EQ (Tokens.size (), 12u ) << Tokens;
17551757 EXPECT_TOKEN (Tokens[0 ], tok::l_square, TT_LambdaLSquare);
1756- EXPECT_TOKEN (Tokens[2 ], tok::arrow, TT_TrailingReturnArrow );
1758+ EXPECT_TOKEN (Tokens[2 ], tok::arrow, TT_LambdaArrow );
17571759 EXPECT_TOKEN (Tokens[5 ], tok::l_brace, TT_LambdaLBrace);
17581760
17591761 Tokens = annotate (" foo([&](u32 bar) __attribute__((attr)) -> void {});" );
17601762 ASSERT_EQ (Tokens.size (), 22u ) << Tokens;
17611763 EXPECT_TOKEN (Tokens[2 ], tok::l_square, TT_LambdaLSquare);
17621764 EXPECT_TOKEN (Tokens[5 ], tok::l_paren, TT_LambdaDefinitionLParen);
1763- EXPECT_TOKEN (Tokens[15 ], tok::arrow, TT_TrailingReturnArrow );
1765+ EXPECT_TOKEN (Tokens[15 ], tok::arrow, TT_LambdaArrow );
17641766 EXPECT_TOKEN (Tokens[17 ], tok::l_brace, TT_LambdaLBrace);
17651767
17661768 Tokens = annotate (" [] <typename T> () {}" );
@@ -1849,7 +1851,7 @@ TEST_F(TokenAnnotatorTest, UnderstandsLambdas) {
18491851 EXPECT_TOKEN (Tokens[0 ], tok::l_square, TT_LambdaLSquare);
18501852 EXPECT_TOKEN (Tokens[2 ], tok::less, TT_TemplateOpener);
18511853 EXPECT_TOKEN (Tokens[6 ], tok::l_paren, TT_LambdaDefinitionLParen);
1852- EXPECT_TOKEN (Tokens[10 ], tok::arrow, TT_TrailingReturnArrow );
1854+ EXPECT_TOKEN (Tokens[10 ], tok::arrow, TT_LambdaArrow );
18531855 EXPECT_TOKEN (Tokens[12 ], tok::kw_requires, TT_RequiresClause);
18541856 EXPECT_TRUE (Tokens[16 ]->ClosesRequiresClause );
18551857 EXPECT_TOKEN (Tokens[17 ], tok::l_brace, TT_LambdaLBrace);
@@ -1918,7 +1920,7 @@ TEST_F(TokenAnnotatorTest, UnderstandsLambdas) {
19181920 EXPECT_TOKEN (Tokens[2 ], tok::less, TT_TemplateOpener);
19191921 EXPECT_TOKEN (Tokens[6 ], tok::kw_requires, TT_RequiresClause);
19201922 EXPECT_TRUE (Tokens[10 ]->ClosesRequiresClause );
1921- EXPECT_TOKEN (Tokens[11 ], tok::arrow, TT_TrailingReturnArrow );
1923+ EXPECT_TOKEN (Tokens[11 ], tok::arrow, TT_LambdaArrow );
19221924 EXPECT_TOKEN (Tokens[13 ], tok::l_brace, TT_LambdaLBrace);
19231925
19241926 Tokens = annotate (" [] <typename T> requires Foo<T> (T t) requires Bar<T> {}" );
@@ -3359,7 +3361,7 @@ TEST_F(TokenAnnotatorTest, FunctionTryBlock) {
33593361 EXPECT_TOKEN (Tokens[3 ], tok::l_paren, TT_FunctionDeclarationLParen);
33603362 EXPECT_TOKEN (Tokens[11 ], tok::colon, TT_CtorInitializerColon);
33613363 EXPECT_TOKEN (Tokens[14 ], tok::l_square, TT_LambdaLSquare);
3362- EXPECT_TOKEN (Tokens[16 ], tok::arrow, TT_TrailingReturnArrow );
3364+ EXPECT_TOKEN (Tokens[16 ], tok::arrow, TT_LambdaArrow );
33633365 EXPECT_TOKEN (Tokens[20 ], tok::l_brace, TT_LambdaLBrace);
33643366 EXPECT_TOKEN (Tokens[31 ], tok::comma, TT_CtorInitializerComma);
33653367 EXPECT_TOKEN (Tokens[36 ], tok::l_brace, TT_FunctionLBrace);
@@ -3386,6 +3388,20 @@ TEST_F(TokenAnnotatorTest, GNULanguageStandard) {
33863388 EXPECT_TOKEN (Tokens[2 ], tok::spaceship, TT_BinaryOperator);
33873389}
33883390
3391+ TEST_F (TokenAnnotatorTest, SplitPenalty) {
3392+ auto Style = getLLVMStyle ();
3393+ Style.ColumnLimit = 20 ;
3394+
3395+ auto Tokens = annotate (" class foo {\n "
3396+ " auto bar()\n "
3397+ " -> bool;\n "
3398+ " };" ,
3399+ Style);
3400+ ASSERT_EQ (Tokens.size (), 13u ) << Tokens;
3401+ EXPECT_TOKEN (Tokens[7 ], tok::arrow, TT_TrailingReturnArrow);
3402+ EXPECT_SPLIT_PENALTY (Tokens[7 ], 23u );
3403+ }
3404+
33893405} // namespace
33903406} // namespace format
33913407} // namespace clang
0 commit comments