[clang] d9593c1 - [clang-format] Fix a bug in indenting lambda trailing arrows (#94560)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 10 09:10:33 PDT 2024
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"
More information about the cfe-commits
mailing list