[clang] [clang-format][NFC] Clean up signatures of some parser functions (PR #66569)
Owen Pan via cfe-commits
cfe-commits at lists.llvm.org
Sat Sep 16 00:54:29 PDT 2023
https://github.com/owenca updated https://github.com/llvm/llvm-project/pull/66569
>From bf3160066ae83d43837f18825d00c963d0c29ca8 Mon Sep 17 00:00:00 2001
From: Owen Pan <owenpiano at gmail.com>
Date: Fri, 15 Sep 2023 21:59:47 -0700
Subject: [PATCH] [clang-format][NFC] Clean up signatures of some parser
functions
Removed TT_CompoundRequirementLBrace and parameters CanContainBracedList and
NextLBracesType.
---
clang/lib/Format/FormatToken.h | 1 -
clang/lib/Format/TokenAnnotator.cpp | 2 +-
clang/lib/Format/UnwrappedLineParser.cpp | 58 ++++++++++--------------
clang/lib/Format/UnwrappedLineParser.h | 13 ++----
4 files changed, 29 insertions(+), 45 deletions(-)
diff --git a/clang/lib/Format/FormatToken.h b/clang/lib/Format/FormatToken.h
index 1ea7ce6a564d8fa..0605ac9da7219f2 100644
--- a/clang/lib/Format/FormatToken.h
+++ b/clang/lib/Format/FormatToken.h
@@ -41,7 +41,6 @@ namespace format {
TYPE(CaseLabelColon) \
TYPE(CastRParen) \
TYPE(ClassLBrace) \
- TYPE(CompoundRequirementLBrace) \
/* ternary ?: expression */ \
TYPE(ConditionalExpr) \
/* the condition in an if statement */ \
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp
index 142168e074bbc27..138f7e8562dcc39 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -1698,7 +1698,7 @@ class AnnotatingParser {
TT_RecordLBrace, TT_StructLBrace, TT_UnionLBrace, TT_RequiresClause,
TT_RequiresClauseInARequiresExpression, TT_RequiresExpression,
TT_RequiresExpressionLParen, TT_RequiresExpressionLBrace,
- TT_CompoundRequirementLBrace, TT_BracedListLBrace)) {
+ TT_BracedListLBrace)) {
CurrentToken->setType(TT_Unknown);
}
CurrentToken->Role.reset();
diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp
index 0ff0656a92d7222..ef96dea4e7e59e4 100644
--- a/clang/lib/Format/UnwrappedLineParser.cpp
+++ b/clang/lib/Format/UnwrappedLineParser.cpp
@@ -335,22 +335,16 @@ bool UnwrappedLineParser::precededByCommentOrPPDirective() const {
}
/// \brief Parses a level, that is ???.
-/// \param OpeningBrace Opening brace (\p nullptr if absent) of that level
-/// \param CanContainBracedList If the content can contain (at any level) a
-/// braced list.
-/// \param NextLBracesType The type for left brace found in this level.
+/// \param OpeningBrace Opening brace (\p nullptr if absent) of that level.
/// \param IfKind The \p if statement kind in the level.
/// \param IfLeftBrace The left brace of the \p if block in the level.
/// \returns true if a simple block of if/else/for/while, or false otherwise.
/// (A simple block has a single statement.)
bool UnwrappedLineParser::parseLevel(const FormatToken *OpeningBrace,
- bool CanContainBracedList,
- TokenType NextLBracesType,
IfStmtKind *IfKind,
FormatToken **IfLeftBrace) {
- auto NextLevelLBracesType = NextLBracesType == TT_CompoundRequirementLBrace
- ? TT_BracedListLBrace
- : TT_Unknown;
+ const bool InRequiresExpression =
+ OpeningBrace && OpeningBrace->is(TT_RequiresExpressionLBrace);
const bool IsPrecededByCommentOrPPDirective =
!Style.RemoveBracesLLVM || precededByCommentOrPPDirective();
FormatToken *IfLBrace = nullptr;
@@ -370,9 +364,9 @@ bool UnwrappedLineParser::parseLevel(const FormatToken *OpeningBrace,
else if (FormatTok->getType() == TT_MacroBlockEnd)
kind = tok::r_brace;
- auto ParseDefault = [this, OpeningBrace, NextLevelLBracesType, IfKind,
+ auto ParseDefault = [this, OpeningBrace, InRequiresExpression, IfKind,
&IfLBrace, &HasDoWhile, &HasLabel, &StatementCount] {
- parseStructuralElement(!OpeningBrace, NextLevelLBracesType, IfKind,
+ parseStructuralElement(OpeningBrace, InRequiresExpression, IfKind,
&IfLBrace, HasDoWhile ? nullptr : &HasDoWhile,
HasLabel ? nullptr : &HasLabel);
++StatementCount;
@@ -385,8 +379,8 @@ bool UnwrappedLineParser::parseLevel(const FormatToken *OpeningBrace,
addUnwrappedLine();
break;
case tok::l_brace:
- if (NextLBracesType != TT_Unknown) {
- FormatTok->setFinalizedType(NextLBracesType);
+ if (InRequiresExpression) {
+ FormatTok->setFinalizedType(TT_RequiresExpressionLBrace);
} else if (FormatTok->Previous &&
FormatTok->Previous->ClosesRequiresClause) {
// We need the 'default' case here to correctly parse a function
@@ -394,14 +388,11 @@ bool UnwrappedLineParser::parseLevel(const FormatToken *OpeningBrace,
ParseDefault();
continue;
}
- if (CanContainBracedList && FormatTok->isNot(TT_MacroBlockBegin) &&
+ if (!InRequiresExpression && FormatTok->isNot(TT_MacroBlockBegin) &&
tryToParseBracedList()) {
continue;
}
- parseBlock(/*MustBeDeclaration=*/false, /*AddLevels=*/1u,
- /*MunchSemi=*/true, /*KeepBraces=*/true, /*IfKind=*/nullptr,
- /*UnindentWhitesmithsBraces=*/false, CanContainBracedList,
- NextLBracesType);
+ parseBlock();
++StatementCount;
assert(StatementCount > 0 && "StatementCount overflow!");
addUnwrappedLine();
@@ -725,10 +716,11 @@ bool UnwrappedLineParser::mightFitOnOneLine(
return Line.Level * Style.IndentWidth + Length <= ColumnLimit;
}
-FormatToken *UnwrappedLineParser::parseBlock(
- bool MustBeDeclaration, unsigned AddLevels, bool MunchSemi, bool KeepBraces,
- IfStmtKind *IfKind, bool UnindentWhitesmithsBraces,
- bool CanContainBracedList, TokenType NextLBracesType) {
+FormatToken *UnwrappedLineParser::parseBlock(bool MustBeDeclaration,
+ unsigned AddLevels, bool MunchSemi,
+ bool KeepBraces,
+ IfStmtKind *IfKind,
+ bool UnindentWhitesmithsBraces) {
auto HandleVerilogBlockLabel = [this]() {
// ":" name
if (Style.isVerilog() && FormatTok->is(tok::colon)) {
@@ -796,8 +788,7 @@ FormatToken *UnwrappedLineParser::parseBlock(
Line->Level += AddLevels;
FormatToken *IfLBrace = nullptr;
- const bool SimpleBlock =
- parseLevel(Tok, CanContainBracedList, NextLBracesType, IfKind, &IfLBrace);
+ const bool SimpleBlock = parseLevel(Tok, IfKind, &IfLBrace);
if (eof())
return IfLBrace;
@@ -957,8 +948,7 @@ static bool ShouldBreakBeforeBrace(const FormatStyle &Style,
}
}
-void UnwrappedLineParser::parseChildBlock(
- bool CanContainBracedList, clang::format::TokenType NextLBracesType) {
+void UnwrappedLineParser::parseChildBlock() {
assert(FormatTok->is(tok::l_brace));
FormatTok->setBlockKind(BK_Block);
const FormatToken *OpeningBrace = FormatTok;
@@ -970,7 +960,7 @@ void UnwrappedLineParser::parseChildBlock(
ScopedDeclarationState DeclarationState(*Line, DeclarationScopeStack,
/*MustBeDeclaration=*/false);
Line->Level += SkipIndent ? 0 : 1;
- parseLevel(OpeningBrace, CanContainBracedList, NextLBracesType);
+ parseLevel(OpeningBrace);
flushComments(isOnNewLine(*FormatTok));
Line->Level -= SkipIndent ? 0 : 1;
}
@@ -1390,8 +1380,9 @@ void UnwrappedLineParser::readTokenWithJavaScriptASI() {
}
void UnwrappedLineParser::parseStructuralElement(
- bool IsTopLevel, TokenType NextLBracesType, IfStmtKind *IfKind,
- FormatToken **IfLeftBrace, bool *HasDoWhile, bool *HasLabel) {
+ const FormatToken *OpeningBrace, bool InRequiresExpression,
+ IfStmtKind *IfKind, FormatToken **IfLeftBrace, bool *HasDoWhile,
+ bool *HasLabel) {
if (Style.Language == FormatStyle::LK_TableGen &&
FormatTok->is(tok::pp_include)) {
nextToken();
@@ -1798,7 +1789,7 @@ void UnwrappedLineParser::parseStructuralElement(
parseParens();
// Break the unwrapped line if a K&R C function definition has a parameter
// declaration.
- if (!IsTopLevel || !Style.isCpp() || !Previous || eof())
+ if (OpeningBrace || !Style.isCpp() || !Previous || eof())
break;
if (isC78ParameterDecl(FormatTok,
Tokens->peekNextToken(/*SkipComment=*/true),
@@ -1831,8 +1822,8 @@ void UnwrappedLineParser::parseStructuralElement(
parseChildBlock();
break;
case tok::l_brace:
- if (NextLBracesType != TT_Unknown)
- FormatTok->setFinalizedType(NextLBracesType);
+ if (InRequiresExpression)
+ FormatTok->setFinalizedType(TT_BracedListLBrace);
if (!tryToParsePropertyAccessor() && !tryToParseBracedList()) {
// A block outside of parentheses must be the last part of a
// structural element.
@@ -3464,8 +3455,7 @@ void UnwrappedLineParser::parseRequiresExpression(FormatToken *RequiresToken) {
if (FormatTok->is(tok::l_brace)) {
FormatTok->setFinalizedType(TT_RequiresExpressionLBrace);
- parseChildBlock(/*CanContainBracedList=*/false,
- /*NextLBracesType=*/TT_CompoundRequirementLBrace);
+ parseChildBlock();
}
}
diff --git a/clang/lib/Format/UnwrappedLineParser.h b/clang/lib/Format/UnwrappedLineParser.h
index 57515af64a3e95f..e571fd229533267 100644
--- a/clang/lib/Format/UnwrappedLineParser.h
+++ b/clang/lib/Format/UnwrappedLineParser.h
@@ -125,8 +125,6 @@ class UnwrappedLineParser {
void parseFile();
bool precededByCommentOrPPDirective() const;
bool parseLevel(const FormatToken *OpeningBrace = nullptr,
- bool CanContainBracedList = true,
- TokenType NextLBracesType = TT_Unknown,
IfStmtKind *IfKind = nullptr,
FormatToken **IfLeftBrace = nullptr);
bool mightFitOnOneLine(UnwrappedLine &Line,
@@ -134,11 +132,8 @@ class UnwrappedLineParser {
FormatToken *parseBlock(bool MustBeDeclaration = false,
unsigned AddLevels = 1u, bool MunchSemi = true,
bool KeepBraces = true, IfStmtKind *IfKind = nullptr,
- bool UnindentWhitesmithsBraces = false,
- bool CanContainBracedList = true,
- TokenType NextLBracesType = TT_Unknown);
- void parseChildBlock(bool CanContainBracedList = true,
- TokenType NextLBracesType = TT_Unknown);
+ bool UnindentWhitesmithsBraces = false);
+ void parseChildBlock();
void parsePPDirective();
void parsePPDefine();
void parsePPIf(bool IfDef);
@@ -147,8 +142,8 @@ class UnwrappedLineParser {
void parsePPPragma();
void parsePPUnknown();
void readTokenWithJavaScriptASI();
- void parseStructuralElement(bool IsTopLevel = false,
- TokenType NextLBracesType = TT_Unknown,
+ void parseStructuralElement(const FormatToken *OpeningBrace = nullptr,
+ bool InRequiresExpression = false,
IfStmtKind *IfKind = nullptr,
FormatToken **IfLeftBrace = nullptr,
bool *HasDoWhile = nullptr,
More information about the cfe-commits
mailing list