llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-format Author: Owen Pan (owenca) <details> <summary>Changes</summary> A for/while loop with only a semicolon as its body should be treated as an empty loop. Fixes #<!-- -->61708. --- Full diff: https://github.com/llvm/llvm-project/pull/70768.diff 2 Files Affected: - (modified) clang/lib/Format/UnwrappedLineParser.cpp (+9-2) - (modified) clang/unittests/Format/FormatTest.cpp (+7-6) ``````````diff diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index 30f9bcbfa29308e..94e238039c2a707 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -3117,9 +3117,16 @@ void UnwrappedLineParser::parseForOrWhileLoop(bool HasParens) { FormatTok->setFinalizedType(TT_ConditionLParen); parseParens(); } - // Event control. - if (Style.isVerilog()) + + if (Style.isVerilog()) { + // Event control. parseVerilogSensitivityList(); + } else if (Style.AllowShortLoopsOnASingleLine && FormatTok->is(tok::semi) && + Tokens->getPreviousToken()->is(tok::r_paren)) { + nextToken(); + addUnwrappedLine(); + return; + } handleAttributes(); parseLoopBody(KeepBraces, /*WrapRightBrace=*/true); diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 15c12c2b8b0da3f..4c09a7eb106e79e 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -1355,18 +1355,19 @@ TEST_F(FormatTest, FormatIfWithoutCompoundStatementButElseWith) { } TEST_F(FormatTest, FormatLoopsWithoutCompoundStatement) { + verifyFormat("while (true)\n" + " ;"); + verifyFormat("for (;;)\n" + " ;"); + FormatStyle AllowsMergedLoops = getLLVMStyle(); AllowsMergedLoops.AllowShortLoopsOnASingleLine = true; verifyFormat("while (true) continue;", AllowsMergedLoops); verifyFormat("for (;;) continue;", AllowsMergedLoops); verifyFormat("for (int &v : vec) v *= 2;", AllowsMergedLoops); verifyFormat("BOOST_FOREACH (int &v, vec) v *= 2;", AllowsMergedLoops); - verifyFormat("while (true)\n" - " ;", - AllowsMergedLoops); - verifyFormat("for (;;)\n" - " ;", - AllowsMergedLoops); + verifyFormat("while (true);", AllowsMergedLoops); + verifyFormat("for (;;);", AllowsMergedLoops); verifyFormat("for (;;)\n" " for (;;) continue;", AllowsMergedLoops); `````````` </details> https://github.com/llvm/llvm-project/pull/70768 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits