diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Format/Format.cpp | 15 | ||||
-rw-r--r-- | lib/Format/TokenAnnotator.cpp | 4 |
2 files changed, 12 insertions, 7 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index 21f32d257c..625f93151f 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -278,9 +278,9 @@ public: LineState State; State.Column = FirstIndent; State.NextToken = &RootToken; - State.Stack.push_back( - ParenState(FirstIndent + 4, FirstIndent, !Style.BinPackParameters, - /*HasMultiParameterLine=*/ false)); + State.Stack.push_back(ParenState(FirstIndent + 4, FirstIndent, + !Style.BinPackParameters, + /*HasMultiParameterLine=*/ false)); State.VariablePos = 0; State.LineContainsContinuedForLoopSection = false; State.ParenLevel = 0; @@ -368,7 +368,7 @@ private: /// \brief The position of the colon in an ObjC method declaration/call. unsigned ColonPos; - + /// \brief Break before third operand in ternary expression. bool BreakBeforeThirdOperand; @@ -520,11 +520,14 @@ private: State.LineContainsContinuedForLoopSection = Previous.isNot(tok::semi); if (!DryRun) { + unsigned NewLines = + std::max(1u, std::min(Current.FormatTok.NewlinesBefore, + Style.MaxEmptyLinesToKeep + 1)); if (!Line.InPPDirective) - Whitespaces.replaceWhitespace(Current, 1, State.Column, + Whitespaces.replaceWhitespace(Current, NewLines, State.Column, WhitespaceStartColumn, Style); else - Whitespaces.replacePPWhitespace(Current, 1, State.Column, + Whitespaces.replacePPWhitespace(Current, NewLines, State.Column, WhitespaceStartColumn, Style); } diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index ac7301eebd..2bce7c0f34 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -266,7 +266,7 @@ private: } return true; } - + void updateParameterCount(AnnotatedToken *Left, AnnotatedToken *Current) { if (Current->is(tok::comma)) ++Left->ParameterCount; @@ -835,6 +835,8 @@ void TokenAnnotator::calculateFormattingInformation(AnnotatedLine &Line) { Current->Parent->is(tok::string_literal) && Current->Children[0].is(tok::string_literal)) { Current->MustBreakBefore = true; + } else if (Current->FormatTok.NewlinesBefore > 1) { + Current->MustBreakBefore = true; } else { Current->MustBreakBefore = false; } |