Author: c8ef Date: 2024-06-10T09:10:30-07:00 New Revision: d9593c1edd7add74564cf950cd209fc35f5261b6
URL: https://github.com/llvm/llvm-project/commit/d9593c1edd7add74564cf950cd209fc35f5261b6 DIFF: https://github.com/llvm/llvm-project/commit/d9593c1edd7add74564cf950cd209fc35f5261b6.diff LOG: [clang-format] Fix a bug in indenting lambda trailing arrows (#94560) Closes #94181 Added: Modified: clang/lib/Format/ContinuationIndenter.cpp clang/unittests/Format/FormatTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp index be684ac71cd61..b07360425ca6e 100644 --- a/clang/lib/Format/ContinuationIndenter.cpp +++ b/clang/lib/Format/ContinuationIndenter.cpp @@ -1257,6 +1257,11 @@ unsigned ContinuationIndenter::getNewLineColumn(const LineState &State) { } return CurrentState.Indent; } + if (Current.is(TT_TrailingReturnArrow) && + Previous.isOneOf(tok::kw_noexcept, tok::kw_mutable, tok::kw_constexpr, + tok::kw_consteval, tok::kw_static, TT_AttributeSquare)) { + return ContinuationIndent; + } if ((Current.isOneOf(tok::r_brace, tok::r_square) || (Current.is(tok::greater) && (Style.isProto() || Style.isTableGen()))) && State.Stack.size() > 1) { diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index dbc1916825f33..fb57333858529 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -22866,6 +22866,22 @@ TEST_F(FormatTest, FormatsLambdas) { " //\n" " });"); + FormatStyle LLVMStyle = getLLVMStyleWithColumns(60); + verifyFormat("very_long_function_name_yes_it_is_really_long(\n" + " [](auto n) noexcept [[back_attr]]\n" + " -> std::unordered_map<very_long_type_name_A,\n" + " very_long_type_name_B> {\n" + " really_do_something();\n" + " });", + LLVMStyle); + verifyFormat("very_long_function_name_yes_it_is_really_long(\n" + " [](auto n) constexpr\n" + " -> std::unordered_map<very_long_type_name_A,\n" + " very_long_type_name_B> {\n" + " really_do_something();\n" + " });", + LLVMStyle); + FormatStyle DoNotMerge = getLLVMStyle(); DoNotMerge.AllowShortLambdasOnASingleLine = FormatStyle::SLS_None; verifyFormat("auto c = []() {\n" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits