summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Format/ContinuationIndenter.cpp10
-rw-r--r--clang/unittests/Format/FormatTestJS.cpp6
2 files changed, 12 insertions, 4 deletions
diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp
index ff2569d41aa..cb5999e60ef 100644
--- a/clang/lib/Format/ContinuationIndenter.cpp
+++ b/clang/lib/Format/ContinuationIndenter.cpp
@@ -178,13 +178,15 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {
return true;
unsigned NewLineColumn = getNewLineColumn(State);
- if (State.Column <= NewLineColumn)
- return false;
-
if (Current.isMemberAccess() &&
- State.Column + getLengthToNextOperator(Current) > Style.ColumnLimit)
+ State.Column + getLengthToNextOperator(Current) > Style.ColumnLimit &&
+ (State.Column > NewLineColumn ||
+ Current.NestingLevel < State.StartOfLineLevel))
return true;
+ if (State.Column <= NewLineColumn)
+ return false;
+
if (Style.AlwaysBreakBeforeMultilineStrings &&
(NewLineColumn == State.FirstIndent + Style.ContinuationIndentWidth ||
Previous.is(tok::comma) || Current.NestingLevel < 2) &&
diff --git a/clang/unittests/Format/FormatTestJS.cpp b/clang/unittests/Format/FormatTestJS.cpp
index 4e974d7285d..9477580016a 100644
--- a/clang/unittests/Format/FormatTestJS.cpp
+++ b/clang/unittests/Format/FormatTestJS.cpp
@@ -530,6 +530,12 @@ TEST_F(FormatTestJS, MultipleFunctionLiterals) {
verifyFormat("getSomeLongPromise()\n"
" .then(function(value) { body(); })\n"
" .thenCatch(function(error) { body(); });");
+
+ verifyFormat("return [aaaaaaaaaaaaaaaaaaaaaa]\n"
+ " .aaaaaaa(function() {\n"
+ " //\n"
+ " })\n"
+ " .bbbbbb();");
}
TEST_F(FormatTestJS, ArrowFunctions) {
OpenPOWER on IntegriCloud