llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-format Author: Owen Pan (owenca) <details> <summary>Changes</summary> --- Full diff: https://github.com/llvm/llvm-project/pull/72010.diff 2 Files Affected: - (modified) clang/lib/Format/UnwrappedLineParser.cpp (+14-22) - (modified) clang/lib/Format/UnwrappedLineParser.h (+1-2) ``````````diff diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index 018bc6c165485e2..e6a333fdc4e42ce 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -2017,8 +2017,7 @@ void UnwrappedLineParser::parseStructuralElement( } else if (Style.Language == FormatStyle::LK_Proto && FormatTok->is(tok::less)) { nextToken(); - parseBracedList(/*ContinueOnSemicolons=*/false, /*IsEnum=*/false, - /*ClosingBraceKind=*/tok::greater); + parseBracedList(); } break; case tok::l_square: @@ -2379,9 +2378,10 @@ bool UnwrappedLineParser::tryToParseChildBlock() { return true; } -bool UnwrappedLineParser::parseBracedList(bool ContinueOnSemicolons, - bool IsEnum, - tok::TokenKind ClosingBraceKind) { +bool UnwrappedLineParser::parseBracedList(bool IsEnum) { + const auto *OpeningBrace = FormatTok->getPreviousNonComment(); + const bool IsAngleBracket = OpeningBrace && OpeningBrace->is(tok::less); + bool HasError = false; // FIXME: Once we have an expression parser in the UnwrappedLineParser, @@ -2403,7 +2403,7 @@ bool UnwrappedLineParser::parseBracedList(bool ContinueOnSemicolons, parseChildBlock(); } } - if (FormatTok->Tok.getKind() == ClosingBraceKind) { + if (FormatTok->is(IsAngleBracket ? tok::greater : tok::r_brace)) { if (IsEnum && !Style.AllowShortEnumsOnASingleLine) addUnwrappedLine(); nextToken(); @@ -2434,14 +2434,9 @@ bool UnwrappedLineParser::parseBracedList(bool ContinueOnSemicolons, parseBracedList(); break; case tok::less: - if (Style.Language == FormatStyle::LK_Proto || - ClosingBraceKind == tok::greater) { - nextToken(); - parseBracedList(/*ContinueOnSemicolons=*/false, /*IsEnum=*/false, - /*ClosingBraceKind=*/tok::greater); - } else { - nextToken(); - } + nextToken(); + if (IsAngleBracket) + parseBracedList(); break; case tok::semi: // JavaScript (or more precisely TypeScript) can have semicolons in braced @@ -2453,8 +2448,8 @@ bool UnwrappedLineParser::parseBracedList(bool ContinueOnSemicolons, break; } HasError = true; - if (!ContinueOnSemicolons) - return !HasError; + if (!IsEnum) + return false; nextToken(); break; case tok::comma: @@ -3618,8 +3613,7 @@ void UnwrappedLineParser::parseConstraintExpression() { return; nextToken(); - parseBracedList(/*ContinueOnSemicolons=*/false, /*IsEnum=*/false, - /*ClosingBraceKind=*/tok::greater); + parseBracedList(); break; default: @@ -3650,8 +3644,7 @@ void UnwrappedLineParser::parseConstraintExpression() { nextToken(); if (FormatTok->is(tok::less)) { nextToken(); - parseBracedList(/*ContinueOnSemicolons=*/false, /*IsEnum=*/false, - /*ClosingBraceKind=*/tok::greater); + parseBracedList(); } TopLevelParensAllowed = false; break; @@ -3732,8 +3725,7 @@ bool UnwrappedLineParser::parseEnum() { addUnwrappedLine(); Line->Level += 1; } - bool HasError = !parseBracedList(/*ContinueOnSemicolons=*/true, - /*IsEnum=*/true); + bool HasError = !parseBracedList(/*IsEnum=*/true); if (!Style.AllowShortEnumsOnASingleLine) Line->Level -= 1; if (HasError) { diff --git a/clang/lib/Format/UnwrappedLineParser.h b/clang/lib/Format/UnwrappedLineParser.h index c31f25fdd8f83c9..61ec04578955ce6 100644 --- a/clang/lib/Format/UnwrappedLineParser.h +++ b/clang/lib/Format/UnwrappedLineParser.h @@ -151,8 +151,7 @@ class UnwrappedLineParser { bool *HasDoWhile = nullptr, bool *HasLabel = nullptr); bool tryToParseBracedList(); - bool parseBracedList(bool ContinueOnSemicolons = false, bool IsEnum = false, - tok::TokenKind ClosingBraceKind = tok::r_brace); + bool parseBracedList(bool IsEnum = false); bool parseParens(TokenType AmpAmpTokenType = TT_Unknown); void parseSquare(bool LambdaIntroducer = false); void keepAncestorBraces(); `````````` </details> https://github.com/llvm/llvm-project/pull/72010 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits