@@ -42,6 +42,8 @@ class TokenAnnotatorTest : public testing::Test {
42
42
EXPECT_EQ ((FormatTok)->getPrecedence (), Prec) << *(FormatTok)
43
43
#define EXPECT_BRACE_KIND (FormatTok, Kind ) \
44
44
EXPECT_EQ (FormatTok->getBlockKind (), Kind) << *(FormatTok)
45
+ #define EXPECT_SPLIT_PENALTY (FormatTok, Penalty ) \
46
+ EXPECT_EQ (FormatTok->SplitPenalty, Penalty) << *(FormatTok)
45
47
#define EXPECT_TOKEN (FormatTok, Kind, Type ) \
46
48
do { \
47
49
EXPECT_TOKEN_KIND (FormatTok, Kind); \
@@ -1717,21 +1719,21 @@ TEST_F(TokenAnnotatorTest, UnderstandsLambdas) {
1717
1719
ASSERT_EQ (Tokens.size (), 9u ) << Tokens;
1718
1720
EXPECT_TOKEN (Tokens[0 ], tok::l_square, TT_LambdaLSquare);
1719
1721
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 );
1721
1723
EXPECT_TOKEN (Tokens[6 ], tok::l_brace, TT_LambdaLBrace);
1722
1724
1723
1725
Tokens = annotate (" []() -> auto & {}" );
1724
1726
ASSERT_EQ (Tokens.size (), 10u ) << Tokens;
1725
1727
EXPECT_TOKEN (Tokens[0 ], tok::l_square, TT_LambdaLSquare);
1726
1728
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 );
1728
1730
EXPECT_TOKEN (Tokens[7 ], tok::l_brace, TT_LambdaLBrace);
1729
1731
1730
1732
Tokens = annotate (" []() -> auto * {}" );
1731
1733
ASSERT_EQ (Tokens.size (), 10u ) << Tokens;
1732
1734
EXPECT_TOKEN (Tokens[0 ], tok::l_square, TT_LambdaLSquare);
1733
1735
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 );
1735
1737
EXPECT_TOKEN (Tokens[7 ], tok::l_brace, TT_LambdaLBrace);
1736
1738
1737
1739
Tokens = annotate (" [] {}" );
@@ -1747,20 +1749,20 @@ TEST_F(TokenAnnotatorTest, UnderstandsLambdas) {
1747
1749
Tokens = annotate (" [] -> auto {}" );
1748
1750
ASSERT_EQ (Tokens.size (), 7u ) << Tokens;
1749
1751
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 );
1751
1753
EXPECT_TOKEN (Tokens[4 ], tok::l_brace, TT_LambdaLBrace);
1752
1754
1753
1755
Tokens = annotate (" [] -> struct S { return {}; }" );
1754
1756
ASSERT_EQ (Tokens.size (), 12u ) << Tokens;
1755
1757
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 );
1757
1759
EXPECT_TOKEN (Tokens[5 ], tok::l_brace, TT_LambdaLBrace);
1758
1760
1759
1761
Tokens = annotate (" foo([&](u32 bar) __attribute__((attr)) -> void {});" );
1760
1762
ASSERT_EQ (Tokens.size (), 22u ) << Tokens;
1761
1763
EXPECT_TOKEN (Tokens[2 ], tok::l_square, TT_LambdaLSquare);
1762
1764
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 );
1764
1766
EXPECT_TOKEN (Tokens[17 ], tok::l_brace, TT_LambdaLBrace);
1765
1767
1766
1768
Tokens = annotate (" [] <typename T> () {}" );
@@ -1849,7 +1851,7 @@ TEST_F(TokenAnnotatorTest, UnderstandsLambdas) {
1849
1851
EXPECT_TOKEN (Tokens[0 ], tok::l_square, TT_LambdaLSquare);
1850
1852
EXPECT_TOKEN (Tokens[2 ], tok::less, TT_TemplateOpener);
1851
1853
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 );
1853
1855
EXPECT_TOKEN (Tokens[12 ], tok::kw_requires, TT_RequiresClause);
1854
1856
EXPECT_TRUE (Tokens[16 ]->ClosesRequiresClause );
1855
1857
EXPECT_TOKEN (Tokens[17 ], tok::l_brace, TT_LambdaLBrace);
@@ -1918,7 +1920,7 @@ TEST_F(TokenAnnotatorTest, UnderstandsLambdas) {
1918
1920
EXPECT_TOKEN (Tokens[2 ], tok::less, TT_TemplateOpener);
1919
1921
EXPECT_TOKEN (Tokens[6 ], tok::kw_requires, TT_RequiresClause);
1920
1922
EXPECT_TRUE (Tokens[10 ]->ClosesRequiresClause );
1921
- EXPECT_TOKEN (Tokens[11 ], tok::arrow, TT_TrailingReturnArrow );
1923
+ EXPECT_TOKEN (Tokens[11 ], tok::arrow, TT_LambdaArrow );
1922
1924
EXPECT_TOKEN (Tokens[13 ], tok::l_brace, TT_LambdaLBrace);
1923
1925
1924
1926
Tokens = annotate (" [] <typename T> requires Foo<T> (T t) requires Bar<T> {}" );
@@ -3359,7 +3361,7 @@ TEST_F(TokenAnnotatorTest, FunctionTryBlock) {
3359
3361
EXPECT_TOKEN (Tokens[3 ], tok::l_paren, TT_FunctionDeclarationLParen);
3360
3362
EXPECT_TOKEN (Tokens[11 ], tok::colon, TT_CtorInitializerColon);
3361
3363
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 );
3363
3365
EXPECT_TOKEN (Tokens[20 ], tok::l_brace, TT_LambdaLBrace);
3364
3366
EXPECT_TOKEN (Tokens[31 ], tok::comma, TT_CtorInitializerComma);
3365
3367
EXPECT_TOKEN (Tokens[36 ], tok::l_brace, TT_FunctionLBrace);
@@ -3386,6 +3388,20 @@ TEST_F(TokenAnnotatorTest, GNULanguageStandard) {
3386
3388
EXPECT_TOKEN (Tokens[2 ], tok::spaceship, TT_BinaryOperator);
3387
3389
}
3388
3390
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
+
3389
3405
} // namespace
3390
3406
} // namespace format
3391
3407
} // namespace clang
0 commit comments