[clang] 43c146c - [clang-format] Take out common code for parsing blocks NFC
via cfe-commits
cfe-commits at lists.llvm.org
Sun May 1 01:58:40 PDT 2022
Author: sstwcw
Date: 2022-05-01T08:58:40Z
New Revision: 43c146c96d8e4607266f2c2ef74c17d4170fc248
URL: https://github.com/llvm/llvm-project/commit/43c146c96d8e4607266f2c2ef74c17d4170fc248
DIFF: https://github.com/llvm/llvm-project/commit/43c146c96d8e4607266f2c2ef74c17d4170fc248.diff
LOG: [clang-format] Take out common code for parsing blocks NFC
Differential Revision: https://reviews.llvm.org/D121757
Added:
Modified:
clang/lib/Format/UnwrappedLineParser.cpp
clang/lib/Format/UnwrappedLineParser.h
Removed:
################################################################################
diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp
index 1e2f4d6761e1e..d20cead7d3212 100644
--- a/clang/lib/Format/UnwrappedLineParser.cpp
+++ b/clang/lib/Format/UnwrappedLineParser.cpp
@@ -2713,55 +2713,49 @@ void UnwrappedLineParser::parseNew() {
} while (!eof());
}
-void UnwrappedLineParser::parseForOrWhileLoop() {
- assert(FormatTok->isOneOf(tok::kw_for, tok::kw_while, TT_ForEachMacro) &&
- "'for', 'while' or foreach macro expected");
- nextToken();
- // JS' for await ( ...
- if (Style.isJavaScript() && FormatTok->is(Keywords.kw_await))
- nextToken();
- if (Style.isCpp() && FormatTok->is(tok::kw_co_await))
- nextToken();
- if (FormatTok->is(tok::l_paren))
- parseParens();
-
+void UnwrappedLineParser::parseLoopBody(bool TryRemoveBraces,
+ bool WrapRightBrace) {
keepAncestorBraces();
if (FormatTok->is(tok::l_brace)) {
FormatToken *LeftBrace = FormatTok;
CompoundStatementIndenter Indenter(this, Style, Line->Level);
parseBlock();
- if (Style.RemoveBracesLLVM) {
+ if (TryRemoveBraces) {
assert(!NestedTooDeep.empty());
if (!NestedTooDeep.back())
markOptionalBraces(LeftBrace);
}
- addUnwrappedLine();
+ if (WrapRightBrace)
+ addUnwrappedLine();
} else {
parseUnbracedBody();
}
- if (Style.RemoveBracesLLVM)
+ if (TryRemoveBraces)
NestedTooDeep.pop_back();
}
-void UnwrappedLineParser::parseDoWhile() {
- assert(FormatTok->is(tok::kw_do) && "'do' expected");
+void UnwrappedLineParser::parseForOrWhileLoop() {
+ assert(FormatTok->isOneOf(tok::kw_for, tok::kw_while, TT_ForEachMacro) &&
+ "'for', 'while' or foreach macro expected");
nextToken();
+ // JS' for await ( ...
+ if (Style.isJavaScript() && FormatTok->is(Keywords.kw_await))
+ nextToken();
+ if (Style.isCpp() && FormatTok->is(tok::kw_co_await))
+ nextToken();
+ if (FormatTok->is(tok::l_paren))
+ parseParens();
- keepAncestorBraces();
+ parseLoopBody(Style.RemoveBracesLLVM, true);
+}
- if (FormatTok->is(tok::l_brace)) {
- CompoundStatementIndenter Indenter(this, Style, Line->Level);
- parseBlock();
- if (Style.BraceWrapping.BeforeWhile)
- addUnwrappedLine();
- } else {
- parseUnbracedBody();
- }
+void UnwrappedLineParser::parseDoWhile() {
+ assert(FormatTok->is(tok::kw_do) && "'do' expected");
+ nextToken();
- if (Style.RemoveBracesLLVM)
- NestedTooDeep.pop_back();
+ parseLoopBody(false, Style.BraceWrapping.BeforeWhile);
// FIXME: Add error handling.
if (!FormatTok->is(tok::kw_while)) {
diff --git a/clang/lib/Format/UnwrappedLineParser.h b/clang/lib/Format/UnwrappedLineParser.h
index 798bae24ad075..3334b5bad97b4 100644
--- a/clang/lib/Format/UnwrappedLineParser.h
+++ b/clang/lib/Format/UnwrappedLineParser.h
@@ -125,6 +125,7 @@ class UnwrappedLineParser {
bool handleCppAttributes();
FormatToken *parseIfThenElse(IfStmtKind *IfKind, bool KeepBraces = false);
void parseTryCatch();
+ void parseLoopBody(bool TryRemoveBraces, bool WrapRightBrace);
void parseForOrWhileLoop();
void parseDoWhile();
void parseLabel(bool LeftAlignLabel = false);
More information about the cfe-commits
mailing list