clang-format: Don't indent lambda body relative to its return type.

Before:
  []()  //
      -> int {
        return 1;  //
      };

After:
  []()  //
      -> int {
    return 1;  //
  };

llvm-svn: 272535
This commit is contained in:
Daniel Jasper 2016-06-13 07:48:45 +00:00
parent dbc9e5f598
commit 87448c5548
2 changed files with 11 additions and 5 deletions

View File

@ -476,11 +476,13 @@ unsigned ContinuationIndenter::addTokenOnNewLine(LineState &State,
// // code
// }
//
// is common and should be formatted like a free-standing function.
if (Style.Language != FormatStyle::LK_JavaScript ||
// is common and should be formatted like a free-standing function. The same
// goes for wrapping before the lambda return type arrow.
if (!Current.is(TT_LambdaArrow) &&
(Style.Language != FormatStyle::LK_JavaScript ||
Current.NestingLevel != 0 || !PreviousNonComment ||
!PreviousNonComment->is(tok::equal) ||
!Current.isOneOf(Keywords.kw_async, Keywords.kw_function))
!Current.isOneOf(Keywords.kw_async, Keywords.kw_function)))
State.Stack.back().NestedBlockIndent = State.Column;
if (NextNonComment->isMemberAccess()) {

View File

@ -10997,6 +10997,10 @@ TEST_F(FormatTest, FormatsLambdas) {
" return aaaaaaaaaaaaaaaaa;\n"
" });",
getLLVMStyleWithColumns(70));
verifyFormat("[]() //\n"
" -> int {\n"
" return 1; //\n"
"};");
// Multiple lambdas in the same parentheses change indentation rules.
verifyFormat("SomeFunction(\n"