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),
|
std::max(std::max(State.Column, NewParenState.Indent),
|
||||||
State.Stack.back().LastSpace);
|
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 "->".
|
// Do not indent relative to the fake parentheses inserted for "." or "->".
|
||||||
// This is a special case to make the following to statements consistent:
|
// This is a special case to make the following to statements consistent:
|
||||||
// OuterFunction(InnerFunctionCall( // break
|
// OuterFunction(InnerFunctionCall( // break
|
||||||
|
|
|
@ -2889,8 +2889,9 @@ TEST_F(FormatTest, ExpressionIndentation) {
|
||||||
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +\n"
|
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +\n"
|
||||||
" bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) {\n}");
|
" bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) {\n}");
|
||||||
verifyFormat("if () {\n"
|
verifyFormat("if () {\n"
|
||||||
"} else if (aaaaa && bbbbb > // break\n"
|
"} else if (aaaaa &&\n"
|
||||||
" ccccc) {\n"
|
" bbbbb > // break\n"
|
||||||
|
" ccccc) {\n"
|
||||||
"}");
|
"}");
|
||||||
|
|
||||||
// Presence of a trailing comment used to change indentation of b.
|
// Presence of a trailing comment used to change indentation of b.
|
||||||
|
|
Loading…
Reference in New Issue