sstwcw created this revision.
sstwcw added a reviewer: clang-format.
sstwcw added a project: clang-format.
Herald added a project: All.
sstwcw requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D121757
Files:
clang/lib/Format/UnwrappedLineParser.cpp
clang/lib/Format/UnwrappedLineParser.h
Index: clang/lib/Format/UnwrappedLineParser.h
===================================================================
--- clang/lib/Format/UnwrappedLineParser.h
+++ clang/lib/Format/UnwrappedLineParser.h
@@ -125,6 +125,8 @@
bool handleCppAttributes();
FormatToken *parseIfThenElse(IfStmtKind *IfKind, bool KeepBraces = false);
void parseTryCatch();
+ void parseIndentedBlock(bool BracesAreOptional = true,
+ bool RBraceOnSeparateLine = true);
void parseForOrWhileLoop();
void parseDoWhile();
void parseLabel(bool LeftAlignLabel = false);
Index: clang/lib/Format/UnwrappedLineParser.cpp
===================================================================
--- clang/lib/Format/UnwrappedLineParser.cpp
+++ clang/lib/Format/UnwrappedLineParser.cpp
@@ -2713,6 +2713,30 @@
} while (!eof());
}
+void UnwrappedLineParser::parseIndentedBlock(bool BracesAreOptional,
+ bool RBraceOnSeparateLine) {
+ CompoundStatementIndenter Indenter(this, Style, Line->Level);
+
+ keepAncestorBraces();
+
+ if (FormatTok->is(tok::l_brace)) {
+ FormatToken *LeftBrace = FormatTok;
+ parseBlock();
+ if (BracesAreOptional && Style.RemoveBracesLLVM) {
+ assert(!NestedTooDeep.empty());
+ if (!NestedTooDeep.back())
+ markOptionalBraces(LeftBrace);
+ }
+ if (RBraceOnSeparateLine)
+ addUnwrappedLine();
+ } else {
+ parseUnbracedBody();
+ }
+
+ if (Style.RemoveBracesLLVM)
+ NestedTooDeep.pop_back();
+}
+
void UnwrappedLineParser::parseForOrWhileLoop() {
assert(FormatTok->isOneOf(tok::kw_for, tok::kw_while, TT_ForEachMacro) &&
"'for', 'while' or foreach macro expected");
@@ -2731,43 +2755,15 @@
parseParens();
}
- keepAncestorBraces();
-
- if (FormatTok->is(tok::l_brace)) {
- FormatToken *LeftBrace = FormatTok;
- CompoundStatementIndenter Indenter(this, Style, Line->Level);
- parseBlock();
- if (Style.RemoveBracesLLVM) {
- assert(!NestedTooDeep.empty());
- if (!NestedTooDeep.back())
- markOptionalBraces(LeftBrace);
- }
- addUnwrappedLine();
- } else {
- parseUnbracedBody();
- }
-
- if (Style.RemoveBracesLLVM)
- NestedTooDeep.pop_back();
+ parseIndentedBlock(/*BracesAreOptional=*/true);
}
void UnwrappedLineParser::parseDoWhile() {
assert(FormatTok->is(tok::kw_do) && "'do' expected");
nextToken();
- keepAncestorBraces();
-
- if (FormatTok->is(tok::l_brace)) {
- CompoundStatementIndenter Indenter(this, Style, Line->Level);
- parseBlock();
- if (Style.BraceWrapping.BeforeWhile)
- addUnwrappedLine();
- } else {
- parseUnbracedBody();
- }
-
- if (Style.RemoveBracesLLVM)
- NestedTooDeep.pop_back();
+ parseIndentedBlock(/*BracesAreoptional=*/false,
+ /*RBraceOnSeparateLine=*/Style.BraceWrapping.BeforeWhile);
// FIXME: Add error handling.
if (!FormatTok->is(tok::kw_while)) {
@@ -2840,21 +2836,7 @@
parseParens();
}
- keepAncestorBraces();
-
- if (FormatTok->is(tok::l_brace)) {
- CompoundStatementIndenter Indenter(this, Style, Line->Level);
- parseBlock();
- addUnwrappedLine();
- } else {
- addUnwrappedLine();
- ++Line->Level;
- parseStructuralElement();
- --Line->Level;
- }
-
- if (Style.RemoveBracesLLVM)
- NestedTooDeep.pop_back();
+ parseIndentedBlock();
}
// Operators that can follow a C variable.
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits