[PATCH] D135918: [clang-format] Fix lambda formatting in conditional
Björn Schäpers via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 3 05:09:20 PDT 2022
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGcdbe296853b1: [clang-format] Fix lambda formatting in conditional (authored by HazardyKnusperkeks).
Changed prior to commit:
https://reviews.llvm.org/D135918?vs=470914&id=472903#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D135918/new/
https://reviews.llvm.org/D135918
Files:
clang/lib/Format/ContinuationIndenter.cpp
clang/unittests/Format/FormatTest.cpp
Index: clang/unittests/Format/FormatTest.cpp
===================================================================
--- clang/unittests/Format/FormatTest.cpp
+++ clang/unittests/Format/FormatTest.cpp
@@ -25549,6 +25549,54 @@
verifyFormat("template <int N> struct Foo<char[N]> {};", Style);
}
+TEST_F(FormatTest, MultilineLambdaInConditional) {
+ auto Style = getLLVMStyleWithColumns(70);
+ verifyFormat("auto aLengthyIdentifier = oneExpressionSoThatWeBreak ? []() {\n"
+ " ;\n"
+ " return 5;\n"
+ "}()\n"
+ " : 2;",
+ Style);
+ verifyFormat(
+ "auto aLengthyIdentifier = oneExpressionSoThatWeBreak ? 2 : []() {\n"
+ " ;\n"
+ " return 5;\n"
+ "}();",
+ Style);
+
+ Style = getLLVMStyleWithColumns(60);
+ verifyFormat("auto aLengthyIdentifier = oneExpressionSoThatWeBreak\n"
+ " ? []() {\n"
+ " ;\n"
+ " return 5;\n"
+ " }()\n"
+ " : 2;",
+ Style);
+ verifyFormat("auto aLengthyIdentifier =\n"
+ " oneExpressionSoThatWeBreak ? 2 : []() {\n"
+ " ;\n"
+ " return 5;\n"
+ " }();",
+ Style);
+
+ Style = getLLVMStyleWithColumns(40);
+ verifyFormat("auto aLengthyIdentifier =\n"
+ " oneExpressionSoThatWeBreak ? []() {\n"
+ " ;\n"
+ " return 5;\n"
+ " }()\n"
+ " : 2;",
+ Style);
+ verifyFormat("auto aLengthyIdentifier =\n"
+ " oneExpressionSoThatWeBreak\n"
+ " ? 2\n"
+ " : []() {\n"
+ " ;\n"
+ " return 5;\n"
+ " };",
+ Style);
+}
+
TEST_F(FormatTest, AlignAfterOpenBracketBlockIndent) {
auto Style = getLLVMStyle();
Index: clang/lib/Format/ContinuationIndenter.cpp
===================================================================
--- clang/lib/Format/ContinuationIndenter.cpp
+++ clang/lib/Format/ContinuationIndenter.cpp
@@ -331,6 +331,15 @@
if (Previous.is(tok::l_square) && Previous.is(TT_ObjCMethodExpr))
return false;
+ if (Current.is(TT_ConditionalExpr) && Previous.is(tok::r_paren) &&
+ Previous.MatchingParen && Previous.MatchingParen->Previous &&
+ Previous.MatchingParen->Previous->MatchingParen &&
+ Previous.MatchingParen->Previous->MatchingParen->is(TT_LambdaLBrace)) {
+ // We have a lambda within a conditional expression, allow breaking here.
+ assert(Previous.MatchingParen->Previous->is(tok::r_brace));
+ return true;
+ }
+
return !CurrentState.NoLineBreak;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D135918.472903.patch
Type: text/x-patch
Size: 2990 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20221103/7df4c836/attachment-0001.bin>
More information about the cfe-commits
mailing list