forked from OSchip/llvm-project
clang-format: precedence-based indentation when breaking before operators.
Before: bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa * bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ccccccccccccccccccccccccccccccccccccccccc; After: bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa * bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > ccccccccccccccccccccccccccccccccccccccccc; Not particularly pretty, but can probably help to uncover bugs. And if this bugs somebody, parentheses can help. llvm-svn: 223111
This commit is contained in:
parent
15f91c5240
commit
8c6e9ef676
|
@ -168,7 +168,7 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {
|
|||
|
||||
if (State.Column < getNewLineColumn(State))
|
||||
return false;
|
||||
if (!Style.BreakBeforeBinaryOperators) {
|
||||
if (Style.BreakBeforeBinaryOperators == FormatStyle::BOS_None) {
|
||||
// If we need to break somewhere inside the LHS of a binary expression, we
|
||||
// should also break after the operator. Otherwise, the formatting would
|
||||
// hide the operator precedence, e.g. in:
|
||||
|
@ -740,9 +740,10 @@ void ContinuationIndenter::moveStatePastFakeLParens(LineState &State,
|
|||
if (Previous && Previous->getPrecedence() > prec::Assignment &&
|
||||
Previous->isOneOf(TT_BinaryOperator, TT_ConditionalExpr) &&
|
||||
Previous->getPrecedence() != prec::Relational) {
|
||||
bool BreakBeforeOperator = Previous->is(tok::lessless) ||
|
||||
bool BreakBeforeOperator =
|
||||
Previous->is(tok::lessless) ||
|
||||
(Previous->is(TT_BinaryOperator) &&
|
||||
Style.BreakBeforeBinaryOperators) ||
|
||||
Style.BreakBeforeBinaryOperators != FormatStyle::BOS_None) ||
|
||||
(Previous->is(TT_ConditionalExpr) &&
|
||||
Style.BreakBeforeTernaryOperators);
|
||||
if ((!Newline && !BreakBeforeOperator) ||
|
||||
|
@ -766,7 +767,7 @@ void ContinuationIndenter::moveStatePastFakeLParens(LineState &State,
|
|||
// other expression, unless the indentation needs to be skipped.
|
||||
if (*I == prec::Conditional ||
|
||||
(!SkipFirstExtraIndent && *I > prec::Assignment &&
|
||||
!Current.isTrailingComment() && !Style.BreakBeforeBinaryOperators))
|
||||
!Current.isTrailingComment()))
|
||||
NewParenState.Indent += Style.ContinuationIndentWidth;
|
||||
if ((Previous && !Previous->opensScope()) || *I > prec::Comma)
|
||||
NewParenState.BreakBeforeParameter = false;
|
||||
|
|
Loading…
Reference in New Issue