Skip to content

Commit 4fe0d74

Browse files
authored
[clang-format] Fix a bug in annotating braces (llvm#134039)
Fix llvm#133873
1 parent 94dbe5e commit 4fe0d74

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

clang/lib/Format/UnwrappedLineParser.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1887,8 +1887,11 @@ void UnwrappedLineParser::parseStructuralElement(
18871887
if (FormatTok->isBinaryOperator())
18881888
nextToken();
18891889
break;
1890-
case tok::caret:
1890+
case tok::caret: {
1891+
const auto *Prev = FormatTok->getPreviousNonComment();
18911892
nextToken();
1893+
if (Prev && Prev->is(tok::identifier))
1894+
break;
18921895
// Block return type.
18931896
if (FormatTok->Tok.isAnyIdentifier() || FormatTok->isTypeName(LangOpts)) {
18941897
nextToken();
@@ -1903,6 +1906,7 @@ void UnwrappedLineParser::parseStructuralElement(
19031906
if (FormatTok->is(tok::l_brace))
19041907
parseChildBlock();
19051908
break;
1909+
}
19061910
case tok::l_brace:
19071911
if (InRequiresExpression)
19081912
FormatTok->setFinalizedType(TT_BracedListLBrace);

clang/unittests/Format/TokenAnnotatorTest.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3622,6 +3622,11 @@ TEST_F(TokenAnnotatorTest, BraceKind) {
36223622
ASSERT_EQ(Tokens.size(), 11u) << Tokens;
36233623
EXPECT_BRACE_KIND(Tokens[7], BK_BracedInit);
36243624
EXPECT_BRACE_KIND(Tokens[9], BK_BracedInit);
3625+
3626+
Tokens = annotate("return lhs ^ Byte{rhs};");
3627+
ASSERT_EQ(Tokens.size(), 9u) << Tokens;
3628+
EXPECT_BRACE_KIND(Tokens[4], BK_BracedInit);
3629+
EXPECT_BRACE_KIND(Tokens[6], BK_BracedInit);
36253630
}
36263631

36273632
TEST_F(TokenAnnotatorTest, UnderstandsElaboratedTypeSpecifier) {

0 commit comments

Comments
 (0)