Author: owenca Date: 2022-05-15T01:33:44-07:00 New Revision: 2cdabc0322929a3954b63c1f29f23959e2e50278
URL: https://github.com/llvm/llvm-project/commit/2cdabc0322929a3954b63c1f29f23959e2e50278 DIFF: https://github.com/llvm/llvm-project/commit/2cdabc0322929a3954b63c1f29f23959e2e50278.diff LOG: [clang-format] Handle "if consteval { ... }" for RemoveBracesLLVM Differential Revision: https://reviews.llvm.org/D125593 Added: Modified: clang/lib/Format/UnwrappedLineParser.cpp clang/unittests/Format/FormatTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index 6ba8edccbb117..c5135222af698 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -2473,7 +2473,12 @@ FormatToken *UnwrappedLineParser::parseIfThenElse(IfStmtKind *IfKind, nextToken(); if (FormatTok->is(tok::exclaim)) nextToken(); + + bool KeepIfBraces = false; + bool KeepElseBraces = false; if (FormatTok->is(tok::kw_consteval)) { + KeepIfBraces = true; + KeepElseBraces = true; nextToken(); } else { if (FormatTok->isOneOf(tok::kw_constexpr, tok::identifier)) @@ -2501,10 +2506,10 @@ FormatToken *UnwrappedLineParser::parseIfThenElse(IfStmtKind *IfKind, parseUnbracedBody(); } - bool KeepIfBraces = false; if (Style.RemoveBracesLLVM) { assert(!NestedTooDeep.empty()); - KeepIfBraces = (IfLeftBrace && !IfLeftBrace->MatchingParen) || + KeepIfBraces = KeepIfBraces || + (IfLeftBrace && !IfLeftBrace->MatchingParen) || NestedTooDeep.back() || IfBlockKind == IfStmtKind::IfOnly || IfBlockKind == IfStmtKind::IfElseIf; } @@ -2558,8 +2563,9 @@ FormatToken *UnwrappedLineParser::parseIfThenElse(IfStmtKind *IfKind, return nullptr; assert(!NestedTooDeep.empty()); - const bool KeepElseBraces = - (ElseLeftBrace && !ElseLeftBrace->MatchingParen) || NestedTooDeep.back(); + KeepElseBraces = KeepElseBraces || + (ElseLeftBrace && !ElseLeftBrace->MatchingParen) || + NestedTooDeep.back(); NestedTooDeep.pop_back(); diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 8ac59dc4a5131..e4fea9085b574 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -25379,6 +25379,25 @@ TEST_F(FormatTest, RemoveBraces) { "}", Style); + verifyFormat("if consteval {\n" + " f();\n" + "} else {\n" + " g();\n" + "}", + Style); + + verifyFormat("if not consteval {\n" + " f();\n" + "} else if (a) {\n" + " g();\n" + "}", + Style); + + verifyFormat("if !consteval {\n" + " g();\n" + "}", + Style); + Style.ColumnLimit = 65; verifyFormat("if (condition) {\n" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits