switch (Tok->Tok.getKind()) {
case tok::l_brace:
+ Tok->BlockKind = BK_Unknown;
LBraceStack.push_back(Tok);
break;
case tok::r_brace:
parseChildBlock();
}
-bool UnwrappedLineParser::tryToParseBracedList(bool ExpectClassBody) {
+bool UnwrappedLineParser::tryToParseBracedList() {
if (FormatTok->BlockKind == BK_Unknown)
- calculateBraceTypes(ExpectClassBody);
+ calculateBraceTypes();
assert(FormatTok->BlockKind != BK_Unknown);
if (FormatTok->BlockKind == BK_Block)
return false;
// and class declarations).
if (FormatTok->isOneOf(tok::colon, tok::less)) {
while (!eof()) {
- if (FormatTok->is(tok::l_brace) &&
- !tryToParseBracedList(/*ExpectClassBody=*/true))
- break;
+ if (FormatTok->is(tok::l_brace)) {
+ calculateBraceTypes(/*ExpectClassBody=*/true);
+ if (!tryToParseBracedList())
+ break;
+ }
if (FormatTok->Tok.is(tok::semi))
return;
nextToken();
void parsePPEndIf();
void parsePPUnknown();
void parseStructuralElement();
- bool tryToParseBracedList(bool ExpectClassBody = false);
+ bool tryToParseBracedList();
bool parseBracedList(bool ContinueOnSemicolons = false);
void parseParens();
void parseSquare();
void readToken();
void flushComments(bool NewlineBeforeNext);
void pushToken(FormatToken *Tok);
- void calculateBraceTypes(bool ExpectClassBody);
+ void calculateBraceTypes(bool ExpectClassBody = false);
// Marks a conditional compilation edge (for example, an '#if', '#ifdef',
// '#else' or merge conflict marker). If 'Unreachable' is true, assumes
verifyFormat("class C : public D {\n"
" SomeClass SC{2};\n"
"};");
+ verifyFormat("class C : public A {\n"
+ " class D : public B {\n"
+ " void f() { int i{2}; }\n"
+ " };\n"
+ "};");
// In combination with BinPackParameters = false.
FormatStyle NoBinPacking = getLLVMStyle();