[clang] 1f1d316 - [clang-format] Correctly annotate Java lambda/sychronized blocks (#187842)
via cfe-commits
cfe-commits at lists.llvm.org
Sat Mar 21 14:00:28 PDT 2026
Author: owenca
Date: 2026-03-21T14:00:23-07:00
New Revision: 1f1d3167b203f3c22be5d96c5560a311e46d1de4
URL: https://github.com/llvm/llvm-project/commit/1f1d3167b203f3c22be5d96c5560a311e46d1de4
DIFF: https://github.com/llvm/llvm-project/commit/1f1d3167b203f3c22be5d96c5560a311e46d1de4.diff
LOG: [clang-format] Correctly annotate Java lambda/sychronized blocks (#187842)
Fixes #171841
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 08c962dd34bbb..a3e8a3e270e73 100644
--- a/clang/lib/Format/UnwrappedLineParser.cpp
+++ b/clang/lib/Format/UnwrappedLineParser.cpp
@@ -527,6 +527,8 @@ void UnwrappedLineParser::calculateBraceTypes(bool ExpectClassBody) {
// `) { }` can only occur in function or method declarations in JS.
Tok->setBlockKind(BK_Block);
}
+ } else if (Style.isJava() && PrevTok && PrevTok->is(tok::arrow)) {
+ Tok->setBlockKind(BK_Block);
} else {
Tok->setBlockKind(BK_Unknown);
}
diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp
index 4081b9c9b4994..756e97708cb8c 100644
--- a/clang/unittests/Format/TokenAnnotatorTest.cpp
+++ b/clang/unittests/Format/TokenAnnotatorTest.cpp
@@ -4040,6 +4040,18 @@ TEST_F(TokenAnnotatorTest, JavaRecord) {
EXPECT_TOKEN(Tokens[6], tok::r_brace, TT_RecordRBrace);
}
+TEST_F(TokenAnnotatorTest, JavaSynchronizedBlock) {
+ auto Tokens = annotate("() -> {\n"
+ " synchronized { x; }\n"
+ "};",
+ getLLVMStyle(FormatStyle::LK_Java));
+ ASSERT_EQ(Tokens.size(), 12u) << Tokens;
+ EXPECT_BRACE_KIND(Tokens[3], BK_Block);
+ EXPECT_BRACE_KIND(Tokens[5], BK_Block);
+ EXPECT_BRACE_KIND(Tokens[8], BK_Block);
+ EXPECT_BRACE_KIND(Tokens[9], BK_Block);
+}
+
TEST_F(TokenAnnotatorTest, CppAltOperatorKeywords) {
auto Tokens = annotate("a = b and c;");
ASSERT_EQ(Tokens.size(), 7u) << Tokens;
More information about the cfe-commits
mailing list