From 3c23474695dab018d83656b68f8048ffda5c3d48 Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Mon, 29 Sep 2014 07:54:54 +0000 Subject: [PATCH] clang-format: [JS] Improve formatting of function literals in chains Before: getSomeLongPromise(.....) .then( function(value) { body(); body(); }) .thenCatch(function(error) { body(); body(); }); After: getSomeLongPromise(.....) .then(function(value) { body(); body(); }) .thenCatch(function(error) { body(); body(); }); git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@218595 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Format/ContinuationIndenter.cpp | 5 ++++- unittests/Format/FormatTestJS.cpp | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/Format/ContinuationIndenter.cpp b/lib/Format/ContinuationIndenter.cpp index ce6ebd84b6..c48df87041 100644 --- a/lib/Format/ContinuationIndenter.cpp +++ b/lib/Format/ContinuationIndenter.cpp @@ -656,7 +656,10 @@ unsigned ContinuationIndenter::moveStateToNextToken(LineState &State, } if (Current.TokenText == "function") State.Stack.back().JSFunctionInlined = - !Newline && Previous && Previous->Type != TT_DictLiteral; + !Newline && Previous && Previous->Type != TT_DictLiteral && + // If the unnamed function is the only parameter to another function, + // we can likely inline it and come up with a good format. + (Previous->isNot(tok::l_paren) || Previous->ParameterCount > 1); } moveStatePastFakeLParens(State, Newline); diff --git a/unittests/Format/FormatTestJS.cpp b/unittests/Format/FormatTestJS.cpp index 52f45c7ddd..09d5f1feb2 100644 --- a/unittests/Format/FormatTestJS.cpp +++ b/unittests/Format/FormatTestJS.cpp @@ -249,6 +249,19 @@ TEST_F(FormatTestJS, MultipleFunctionLiterals) { " doFoo();\n" " doBaz();\n" " });\n"); + + verifyFormat("getSomeLongPromise()\n" + " .then(function(value) { body(); })\n" + " .thenCatch(function(error) { body(); });"); + verifyFormat("getSomeLongPromise()\n" + " .then(function(value) {\n" + " body();\n" + " body();\n" + " })\n" + " .thenCatch(function(error) {\n" + " body();\n" + " body();\n" + " });"); } TEST_F(FormatTestJS, ReturnStatements) { -- 2.40.0