forked from OSchip/llvm-project
clang-format: Prefer an additional line-break over hanging indent.
Don't allow the RHS of an operator to be split over multiple lines unless there is a line-break right after the operator. Before: if (aaaa && bbbbb || // break cccc) { } After: if (aaaa && bbbbb || // break cccc) { } In most cases, this seems to increase readability. llvm-svn: 205527
This commit is contained in:
parent
2b7556ec16
commit
5c33265c9e
|
@ -609,6 +609,18 @@ unsigned ContinuationIndenter::moveStateToNextToken(LineState &State,
|
|||
std::max(std::max(State.Column, NewParenState.Indent),
|
||||
State.Stack.back().LastSpace);
|
||||
|
||||
// Don't allow the RHS of an operator to be split over multiple lines unless
|
||||
// there is a line-break right after the operator.
|
||||
// Exclude relational operators, as there, it is always more desirable to
|
||||
// have the LHS 'left' of the RHS.
|
||||
// FIXME: Implement this for '<<' and BreakBeforeBinaryOperators.
|
||||
if (!Newline && Previous && Previous->Type == TT_BinaryOperator &&
|
||||
!Previous->isOneOf(tok::lessless, tok::question, tok::colon) &&
|
||||
Previous->getPrecedence() > prec::Assignment &&
|
||||
Previous->getPrecedence() != prec::Relational &&
|
||||
!Style.BreakBeforeBinaryOperators)
|
||||
NewParenState.NoLineBreak = true;
|
||||
|
||||
// Do not indent relative to the fake parentheses inserted for "." or "->".
|
||||
// This is a special case to make the following to statements consistent:
|
||||
// OuterFunction(InnerFunctionCall( // break
|
||||
|
|
|
@ -2889,7 +2889,8 @@ TEST_F(FormatTest, ExpressionIndentation) {
|
|||
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +\n"
|
||||
" bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) {\n}");
|
||||
verifyFormat("if () {\n"
|
||||
"} else if (aaaaa && bbbbb > // break\n"
|
||||
"} else if (aaaaa &&\n"
|
||||
" bbbbb > // break\n"
|
||||
" ccccc) {\n"
|
||||
"}");
|
||||
|
||||
|
|
Loading…
Reference in New Issue