@@ -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