Skip to content

Commit 4beef41

Browse files
author
git apple-llvm automerger
committed
Merge commit '4b10ade1a6af' from llvm.org/main into next
2 parents 9741b9a + 4b10ade commit 4beef41

File tree

2 files changed

+29
-12
lines changed

2 files changed

+29
-12
lines changed

clang/lib/Format/UnwrappedLineParser.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -534,11 +534,11 @@ void UnwrappedLineParser::calculateBraceTypes(bool ExpectClassBody) {
534534
case tok::r_brace:
535535
if (LBraceStack.empty())
536536
break;
537-
if (LBraceStack.back().Tok->is(BK_Unknown)) {
537+
if (auto *LBrace = LBraceStack.back().Tok; LBrace->is(BK_Unknown)) {
538538
bool ProbablyBracedList = false;
539539
if (Style.Language == FormatStyle::LK_Proto) {
540540
ProbablyBracedList = NextTok->isOneOf(tok::comma, tok::r_square);
541-
} else {
541+
} else if (LBrace->isNot(TT_EnumLBrace)) {
542542
// Using OriginalColumn to distinguish between ObjC methods and
543543
// binary operators is a bit hacky.
544544
bool NextIsObjCMethod = NextTok->isOneOf(tok::plus, tok::minus) &&
@@ -552,7 +552,7 @@ void UnwrappedLineParser::calculateBraceTypes(bool ExpectClassBody) {
552552

553553
// If we already marked the opening brace as braced list, the closing
554554
// must also be part of it.
555-
ProbablyBracedList = LBraceStack.back().Tok->is(TT_BracedListLBrace);
555+
ProbablyBracedList = LBrace->is(TT_BracedListLBrace);
556556

557557
ProbablyBracedList = ProbablyBracedList ||
558558
(Style.isJavaScript() &&
@@ -608,13 +608,9 @@ void UnwrappedLineParser::calculateBraceTypes(bool ExpectClassBody) {
608608
ProbablyBracedList = true;
609609
}
610610
}
611-
if (ProbablyBracedList) {
612-
Tok->setBlockKind(BK_BracedInit);
613-
LBraceStack.back().Tok->setBlockKind(BK_BracedInit);
614-
} else {
615-
Tok->setBlockKind(BK_Block);
616-
LBraceStack.back().Tok->setBlockKind(BK_Block);
617-
}
611+
const auto BlockKind = ProbablyBracedList ? BK_BracedInit : BK_Block;
612+
Tok->setBlockKind(BlockKind);
613+
LBrace->setBlockKind(BlockKind);
618614
}
619615
LBraceStack.pop_back();
620616
break;
@@ -2418,6 +2414,7 @@ bool UnwrappedLineParser::tryToParseChildBlock() {
24182414
}
24192415

24202416
bool UnwrappedLineParser::parseBracedList(bool IsAngleBracket, bool IsEnum) {
2417+
assert(!IsAngleBracket || !IsEnum);
24212418
bool HasError = false;
24222419

24232420
// FIXME: Once we have an expression parser in the UnwrappedLineParser,
@@ -2440,8 +2437,11 @@ bool UnwrappedLineParser::parseBracedList(bool IsAngleBracket, bool IsEnum) {
24402437
}
24412438
}
24422439
if (FormatTok->is(IsAngleBracket ? tok::greater : tok::r_brace)) {
2443-
if (IsEnum && !Style.AllowShortEnumsOnASingleLine)
2444-
addUnwrappedLine();
2440+
if (IsEnum) {
2441+
FormatTok->setBlockKind(BK_Block);
2442+
if (!Style.AllowShortEnumsOnASingleLine)
2443+
addUnwrappedLine();
2444+
}
24452445
nextToken();
24462446
return !HasError;
24472447
}

clang/unittests/Format/TokenAnnotatorTest.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2915,6 +2915,23 @@ TEST_F(TokenAnnotatorTest, BraceKind) {
29152915
ASSERT_EQ(Tokens.size(), 10u) << Tokens;
29162916
EXPECT_BRACE_KIND(Tokens[6], BK_BracedInit);
29172917
EXPECT_BRACE_KIND(Tokens[7], BK_BracedInit);
2918+
2919+
Tokens = annotate("#ifdef DEBUG_ENABLED\n"
2920+
"#else\n"
2921+
"#endif\n"
2922+
"class RenderingServer : Object {\n"
2923+
"#ifndef DISABLE_DEPRECATED\n"
2924+
" enum Features {\n"
2925+
" FEATURE_SHADERS,\n"
2926+
" FEATURE_MULTITHREADED,\n"
2927+
" };\n"
2928+
"#endif\n"
2929+
"};");
2930+
ASSERT_EQ(Tokens.size(), 29u) << Tokens;
2931+
EXPECT_BRACE_KIND(Tokens[11], BK_Block);
2932+
EXPECT_BRACE_KIND(Tokens[17], BK_Block);
2933+
EXPECT_BRACE_KIND(Tokens[22], BK_Block);
2934+
EXPECT_BRACE_KIND(Tokens[26], BK_Block);
29182935
}
29192936

29202937
TEST_F(TokenAnnotatorTest, UnderstandsElaboratedTypeSpecifier) {

0 commit comments

Comments
 (0)