Skip to content

Commit d69050d

Browse files
authored
[clang-format] Annotate r_paren before braced list as TT_CastRParen (#96271)
Fixes #96096.
1 parent 3845814 commit d69050d

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

clang/lib/Format/TokenAnnotator.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2837,6 +2837,11 @@ class AnnotatingParser {
28372837
if (!AfterRParen->Next)
28382838
return false;
28392839

2840+
if (AfterRParen->is(tok::l_brace) &&
2841+
AfterRParen->getBlockKind() == BK_BracedInit) {
2842+
return true;
2843+
}
2844+
28402845
// If the next token after the parenthesis is a unary operator, assume
28412846
// that this is cast, unless there are unexpected tokens inside the
28422847
// parenthesis.

clang/unittests/Format/TokenAnnotatorTest.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -662,6 +662,10 @@ TEST_F(TokenAnnotatorTest, UnderstandsCasts) {
662662
EXPECT_TOKEN(Tokens[3], tok::r_paren, TT_Unknown);
663663
EXPECT_TOKEN(Tokens[4], tok::amp, TT_BinaryOperator);
664664

665+
Tokens = annotate("return (struct foo){};");
666+
ASSERT_EQ(Tokens.size(), 9u) << Tokens;
667+
EXPECT_TOKEN(Tokens[4], tok::r_paren, TT_CastRParen);
668+
665669
Tokens = annotate("#define FOO(bar) foo((uint64_t)&bar)");
666670
ASSERT_EQ(Tokens.size(), 15u) << Tokens;
667671
EXPECT_TOKEN(Tokens[10], tok::r_paren, TT_CastRParen);

0 commit comments

Comments
 (0)