r242138 - clang-format: Fix formatting of multiple lambdas in initializers.
Daniel Jasper
djasper at google.com
Tue Jul 14 04:26:14 PDT 2015
Author: djasper
Date: Tue Jul 14 06:26:14 2015
New Revision: 242138
URL: http://llvm.org/viewvc/llvm-project?rev=242138&view=rev
Log:
clang-format: Fix formatting of multiple lambdas in initializers.
Before:
SomeFunction({[&] {
// comment
},
[&] {
// comment
}});
After:
SomeFunction({[&] {
// comment
},
[&] {
// comment
}});
Modified:
cfe/trunk/lib/Format/ContinuationIndenter.cpp
cfe/trunk/unittests/Format/FormatTest.cpp
Modified: cfe/trunk/lib/Format/ContinuationIndenter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/ContinuationIndenter.cpp?rev=242138&r1=242137&r2=242138&view=diff
==============================================================================
--- cfe/trunk/lib/Format/ContinuationIndenter.cpp (original)
+++ cfe/trunk/lib/Format/ContinuationIndenter.cpp Tue Jul 14 06:26:14 2015
@@ -862,6 +862,8 @@ void ContinuationIndenter::moveStatePast
unsigned LastSpace = State.Stack.back().LastSpace;
bool AvoidBinPacking;
bool BreakBeforeParameter = false;
+ unsigned NestedBlockIndent = std::max(State.Stack.back().StartOfFunctionCall,
+ State.Stack.back().NestedBlockIndent);
if (Current.isOneOf(tok::l_brace, TT_ArrayInitializerLSquare)) {
if (Current.opensBlockTypeList(Style)) {
NewIndent = State.Stack.back().NestedBlockIndent + Style.IndentWidth;
@@ -875,6 +877,8 @@ void ContinuationIndenter::moveStatePast
Current.isOneOf(TT_ArrayInitializerLSquare, TT_DictLiteral) ||
Style.Language == FormatStyle::LK_Proto || !Style.BinPackArguments ||
(NextNoComment && NextNoComment->is(TT_DesignatedInitializerPeriod));
+ if (Current.ParameterCount > 1)
+ NestedBlockIndent = std::max(NestedBlockIndent, State.Column + 1);
} else {
NewIndent = Style.ContinuationIndentWidth +
std::max(State.Stack.back().LastSpace,
@@ -922,8 +926,6 @@ void ContinuationIndenter::moveStatePast
bool NoLineBreak = State.Stack.back().NoLineBreak ||
(Current.is(TT_TemplateOpener) &&
State.Stack.back().ContainsUnwrappedBuilder);
- unsigned NestedBlockIndent = std::max(State.Stack.back().StartOfFunctionCall,
- State.Stack.back().NestedBlockIndent);
State.Stack.push_back(ParenState(NewIndent, NewIndentLevel, LastSpace,
AvoidBinPacking, NoLineBreak));
State.Stack.back().NestedBlockIndent = NestedBlockIndent;
Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=242138&r1=242137&r2=242138&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Tue Jul 14 06:26:14 2015
@@ -9866,6 +9866,15 @@ TEST_F(FormatTest, FormatsLambdas) {
" return aaaaaaaaaaaaaaaaaaaaaaa != aaaaaaaaaaaaaaaaaaaaaaa;\n"
"});",
getLLVMStyleWithColumns(60));
+ verifyFormat("SomeFunction({[&] {\n"
+ " // comment\n"
+ " },\n"
+ " [&] {\n"
+ " // comment\n"
+ " }});");
+ verifyFormat("SomeFunction({[&] {\n"
+ " // comment\n"
+ "}});");
// Lambdas with return types.
verifyFormat("int c = []() -> int { return 2; }();\n");
More information about the cfe-commits
mailing list