Author: owenca Date: 2022-06-05T15:45:25-07:00 New Revision: fc1c160f73304d474198d9a21e857b47df2acd3a
URL: https://github.com/llvm/llvm-project/commit/fc1c160f73304d474198d9a21e857b47df2acd3a DIFF: https://github.com/llvm/llvm-project/commit/fc1c160f73304d474198d9a21e857b47df2acd3a.diff LOG: [clang-format] Handle attributes for for/while loops Fixes #55853. Differential Revision: https://reviews.llvm.org/D127054 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 8de7fae9ae51d..30bdbdfb2c702 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -2889,6 +2889,7 @@ void UnwrappedLineParser::parseForOrWhileLoop() { if (FormatTok->is(tok::l_paren)) parseParens(); + handleAttributes(); parseLoopBody(KeepBraces, /*WrapRightBrace=*/true); } diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index f8f2715c39768..264f50ab980ea 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -23846,6 +23846,22 @@ TEST_F(FormatTest, LikelyUnlikely) { " return 29;\n", Style); + verifyFormat("while (limit > 0) [[unlikely]] {\n" + " --limit;\n" + "}", + Style); + verifyFormat("for (auto &limit : limits) [[likely]] {\n" + " --limit;\n" + "}", + Style); + + verifyFormat("for (auto &limit : limits) [[unlikely]]\n" + " --limit;", + Style); + verifyFormat("while (limit > 0) [[likely]]\n" + " --limit;", + Style); + Style.AttributeMacros.push_back("UNLIKELY"); Style.AttributeMacros.push_back("LIKELY"); verifyFormat("if (argc > 5) UNLIKELY\n" @@ -23874,6 +23890,22 @@ TEST_F(FormatTest, LikelyUnlikely) { " return 42;\n" "}\n", Style); + + verifyFormat("for (auto &limit : limits) UNLIKELY {\n" + " --limit;\n" + "}", + Style); + verifyFormat("while (limit > 0) LIKELY {\n" + " --limit;\n" + "}", + Style); + + verifyFormat("while (limit > 0) UNLIKELY\n" + " --limit;", + Style); + verifyFormat("for (auto &limit : limits) LIKELY\n" + " --limit;", + Style); } TEST_F(FormatTest, PenaltyIndentedWhitespace) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits