Author: Owen Pan Date: 2025-04-02T20:08:56-07:00 New Revision: 4fe0d742752c55d5d10b48620aab30fd81db6645
URL: https://github.com/llvm/llvm-project/commit/4fe0d742752c55d5d10b48620aab30fd81db6645 DIFF: https://github.com/llvm/llvm-project/commit/4fe0d742752c55d5d10b48620aab30fd81db6645.diff LOG: [clang-format] Fix a bug in annotating braces (#134039) Fix #133873 Added: Modified: clang/lib/Format/UnwrappedLineParser.cpp clang/unittests/Format/TokenAnnotatorTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index f7712bea01c2c..213b706807b2a 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -1887,8 +1887,11 @@ void UnwrappedLineParser::parseStructuralElement( if (FormatTok->isBinaryOperator()) nextToken(); break; - case tok::caret: + case tok::caret: { + const auto *Prev = FormatTok->getPreviousNonComment(); nextToken(); + if (Prev && Prev->is(tok::identifier)) + break; // Block return type. if (FormatTok->Tok.isAnyIdentifier() || FormatTok->isTypeName(LangOpts)) { nextToken(); @@ -1903,6 +1906,7 @@ void UnwrappedLineParser::parseStructuralElement( if (FormatTok->is(tok::l_brace)) parseChildBlock(); break; + } case tok::l_brace: if (InRequiresExpression) FormatTok->setFinalizedType(TT_BracedListLBrace); diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp index af9fd574b068c..7e0af1c7b4c36 100644 --- a/clang/unittests/Format/TokenAnnotatorTest.cpp +++ b/clang/unittests/Format/TokenAnnotatorTest.cpp @@ -3622,6 +3622,11 @@ TEST_F(TokenAnnotatorTest, BraceKind) { ASSERT_EQ(Tokens.size(), 11u) << Tokens; EXPECT_BRACE_KIND(Tokens[7], BK_BracedInit); EXPECT_BRACE_KIND(Tokens[9], BK_BracedInit); + + Tokens = annotate("return lhs ^ Byte{rhs};"); + ASSERT_EQ(Tokens.size(), 9u) << Tokens; + EXPECT_BRACE_KIND(Tokens[4], BK_BracedInit); + EXPECT_BRACE_KIND(Tokens[6], BK_BracedInit); } TEST_F(TokenAnnotatorTest, UnderstandsElaboratedTypeSpecifier) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits