forked from OSchip/llvm-project
Don't remove blank lines within unwrapped lines.
If the code author decides to put empty lines anywhere into the code we should treat them equally, i.e. reduce them to the configured MaxEmptyLinesToKeep. With this change, we e.g. keep the newline in: SomeType ST = { // First value a, // Second value b }; llvm-svn: 175620
This commit is contained in:
parent
0ccdd1315b
commit
dc7d5817e2
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -576,6 +576,20 @@ TEST_F(FormatTest, CommentsInStaticInitializers) {
|
|||
" d, e, f },\n"
|
||||
" { // Group #3\n"
|
||||
" g, h, i } };");
|
||||
|
||||
EXPECT_EQ("S s = {\n"
|
||||
" // Some comment\n"
|
||||
" a\n"
|
||||
"\n"
|
||||
" // Comment after empty line\n"
|
||||
" b\n"
|
||||
"}", format("S s = {\n"
|
||||
" // Some comment\n"
|
||||
" a\n"
|
||||
" \n"
|
||||
" // Comment after empty line\n"
|
||||
" b\n"
|
||||
"}"));
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
Loading…
Reference in New Issue