forked from OSchip/llvm-project
clang-format: Fix bug with comments between non-trival parameters.
Before: SomeFunction(a, a, // comment b + x); After: SomeFunction(a, a, // comment b + x); llvm-svn: 219209
This commit is contained in:
parent
219b20e1a3
commit
4281c5ae01
|
@ -487,7 +487,7 @@ unsigned ContinuationIndenter::getNewLineColumn(const LineState &State) {
|
|||
if (!State.NextToken || !State.NextToken->Previous)
|
||||
return 0;
|
||||
FormatToken &Current = *State.NextToken;
|
||||
const FormatToken &Previous = *State.NextToken->Previous;
|
||||
const FormatToken &Previous = *Current.Previous;
|
||||
// If we are continuing an expression, we want to use the continuation indent.
|
||||
unsigned ContinuationIndent =
|
||||
std::max(State.Stack.back().LastSpace, State.Stack.back().Indent) +
|
||||
|
@ -717,7 +717,8 @@ void ContinuationIndenter::moveStatePastFakeLParens(LineState &State,
|
|||
// Indent from 'LastSpace' unless this the fake parentheses encapsulating a
|
||||
// builder type call after 'return'. If such a call is line-wrapped, we
|
||||
// commonly just want to indent from the start of the line.
|
||||
if (!Previous || Previous->isNot(tok::kw_return) || *I > 0)
|
||||
if (!Current.isTrailingComment() &&
|
||||
(!Previous || Previous->isNot(tok::kw_return) || *I > 0))
|
||||
NewParenState.Indent =
|
||||
std::max(std::max(State.Column, NewParenState.Indent),
|
||||
State.Stack.back().LastSpace);
|
||||
|
@ -756,7 +757,7 @@ void ContinuationIndenter::moveStatePastFakeLParens(LineState &State,
|
|||
// other expression, unless the indentation needs to be skipped.
|
||||
if (*I == prec::Conditional ||
|
||||
(!SkipFirstExtraIndent && *I > prec::Assignment &&
|
||||
!Style.BreakBeforeBinaryOperators))
|
||||
!Current.isTrailingComment() && !Style.BreakBeforeBinaryOperators))
|
||||
NewParenState.Indent += Style.ContinuationIndentWidth;
|
||||
if ((Previous && !Previous->opensScope()) || *I > prec::Comma)
|
||||
NewParenState.BreakBeforeParameter = false;
|
||||
|
|
|
@ -832,6 +832,12 @@ TEST_F(FormatTest, UnderstandsSingleLineComments) {
|
|||
verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =\n"
|
||||
" // Comment inside a statement.\n"
|
||||
" bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;");
|
||||
verifyFormat("SomeFunction(a,\n"
|
||||
" // comment\n"
|
||||
" b + x);");
|
||||
verifyFormat("SomeFunction(a, a,\n"
|
||||
" // comment\n"
|
||||
" b + x);");
|
||||
verifyFormat(
|
||||
"bool aaaaaaaaaaaaa = // comment\n"
|
||||
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaaaaaaa ||\n"
|
||||
|
|
Loading…
Reference in New Issue