diff options
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Format/ContinuationIndenter.cpp | 16 | 
1 files changed, 9 insertions, 7 deletions
| diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp index 8a55241cdc3..7e751d46fdd 100644 --- a/clang/lib/Format/ContinuationIndenter.cpp +++ b/clang/lib/Format/ContinuationIndenter.cpp @@ -150,12 +150,6 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {        State.Stack.back().BreakBeforeParameter && !Current.isTrailingComment() &&        !Current.isOneOf(tok::r_paren, tok::r_brace))      return true; -  if (Style.AlwaysBreakBeforeMultilineStrings && -      State.Column > State.Stack.back().Indent && // Breaking saves columns. -      !Previous.isOneOf(tok::kw_return, tok::lessless, tok::at) && -      !Previous.isOneOf(TT_InlineASMColon, TT_ConditionalExpr) && -      nextIsMultilineString(State)) -    return true;    if (((Previous.is(TT_DictLiteral) && Previous.is(tok::l_brace)) ||         Previous.is(TT_ArrayInitializerLSquare)) &&        Style.ColumnLimit > 0 && @@ -170,9 +164,17 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {        State.Stack.back().BreakBeforeParameter)      return true; -  if (State.Column < getNewLineColumn(State)) +  unsigned NewLineColumn = getNewLineColumn(State); +  if (State.Column < NewLineColumn)      return false; +  if (Style.AlwaysBreakBeforeMultilineStrings && +      NewLineColumn == State.FirstIndent + Style.ContinuationIndentWidth && +      !Previous.isOneOf(tok::kw_return, tok::lessless, tok::at) && +      !Previous.isOneOf(TT_InlineASMColon, TT_ConditionalExpr) && +      nextIsMultilineString(State)) +    return true; +    // Using CanBreakBefore here and below takes care of the decision whether the    // current style uses wrapping before or after operators for the given    // operator. | 

