Skip to content

Commit 885382f

Browse files
authored
[clang-format] Fix a bug in annotating braces (llvm#127306)
Fixes llvm#107616.
1 parent 69f3e00 commit 885382f

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

clang/lib/Format/UnwrappedLineParser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ void UnwrappedLineParser::calculateBraceTypes(bool ExpectClassBody) {
510510
break;
511511
do {
512512
NextTok = Tokens->getNextToken();
513-
} while (NextTok->NewlinesBefore == 0 && NextTok->isNot(tok::eof));
513+
} while (!NextTok->HasUnescapedNewline && NextTok->isNot(tok::eof));
514514

515515
while (NextTok->is(tok::comment))
516516
NextTok = Tokens->getNextToken();

clang/unittests/Format/TokenAnnotatorTest.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3519,6 +3519,19 @@ TEST_F(TokenAnnotatorTest, BraceKind) {
35193519
EXPECT_BRACE_KIND(Tokens[11], BK_Block);
35203520
EXPECT_BRACE_KIND(Tokens[12], BK_Block);
35213521

3522+
Tokens = annotate("class foo {\n"
3523+
" foo() {}\n"
3524+
"#if defined(_MSC_VER__clang____GNUC__FOO_) || \\\n"
3525+
" (defined(__GNUC__) && defined(FOO))\n"
3526+
" foo() {}\n"
3527+
"#endif\n"
3528+
"};");
3529+
ASSERT_EQ(Tokens.size(), 36u) << Tokens;
3530+
EXPECT_TOKEN(Tokens[6], tok::l_brace, TT_FunctionLBrace);
3531+
EXPECT_BRACE_KIND(Tokens[7], BK_Block);
3532+
EXPECT_TOKEN(Tokens[26], tok::identifier, TT_CtorDtorDeclName);
3533+
EXPECT_TOKEN(Tokens[27], tok::l_paren, TT_FunctionDeclarationLParen);
3534+
35223535
Tokens = annotate("a = class extends goog.a {};",
35233536
getGoogleStyle(FormatStyle::LK_JavaScript));
35243537
ASSERT_EQ(Tokens.size(), 11u) << Tokens;

0 commit comments

Comments
 (0)