forked from OSchip/llvm-project
clang-format: Fix corner cases for comments in if conditions.
Before: if ( // a x + 3) { .. After: if ( // a x + 3) { .. llvm-svn: 208175
This commit is contained in:
parent
5d174547a9
commit
8acf822b6f
|
@ -290,10 +290,11 @@ void ContinuationIndenter::addTokenOnCurrentLine(LineState &State, bool DryRun,
|
|||
State.Stack.back().ContainsUnwrappedBuilder = true;
|
||||
|
||||
State.Column += Spaces;
|
||||
if (Current.is(tok::l_paren) && Previous.isOneOf(tok::kw_if, tok::kw_for))
|
||||
if (Current.isNot(tok::comment) && Previous.is(tok::l_paren) &&
|
||||
Previous.Previous && Previous.Previous->isOneOf(tok::kw_if, tok::kw_for))
|
||||
// Treat the condition inside an if as if it was a second function
|
||||
// parameter, i.e. let nested calls have a continuation indent.
|
||||
State.Stack.back().LastSpace = State.Column + 1; // 1 is length of "(".
|
||||
State.Stack.back().LastSpace = State.Column;
|
||||
else if (Current.isNot(tok::comment) &&
|
||||
(Previous.is(tok::comma) ||
|
||||
(Previous.is(tok::colon) && Previous.Type == TT_ObjCMethodExpr)))
|
||||
|
|
|
@ -1667,7 +1667,7 @@ bool TokenAnnotator::canBreakBefore(const AnnotatedLine &Line,
|
|||
return false;
|
||||
if (Left.is(tok::l_paren) && Left.Previous &&
|
||||
(Left.Previous->Type == TT_BinaryOperator ||
|
||||
Left.Previous->Type == TT_CastRParen))
|
||||
Left.Previous->Type == TT_CastRParen || Left.Previous->is(tok::kw_if)))
|
||||
return false;
|
||||
if (Right.Type == TT_ImplicitStringLiteral)
|
||||
return false;
|
||||
|
|
|
@ -390,6 +390,11 @@ TEST_F(FormatTest, ElseIf) {
|
|||
"else {\n"
|
||||
" g()\n"
|
||||
"}");
|
||||
|
||||
verifyFormat("if (a) {\n"
|
||||
"} else if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
|
||||
" aaaaaaaaaaaaaaaaaaaaaaaaaaaa)) {\n"
|
||||
"}");
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, FormatsForLoop) {
|
||||
|
@ -847,6 +852,18 @@ TEST_F(FormatTest, UnderstandsSingleLineComments) {
|
|||
" int i; /* iiiiiiiiiiiiiiiiiiiii */ \\\n"
|
||||
" int jjjjjjjjjjjjjjjjjjjjjjjj; /* */",
|
||||
getLLVMStyleWithColumns(61));
|
||||
|
||||
verifyFormat("if ( // This is some comment\n"
|
||||
" x + 3) {\n"
|
||||
"}");
|
||||
EXPECT_EQ("if ( // This is some comment\n"
|
||||
" // spanning two lines\n"
|
||||
" x + 3) {\n"
|
||||
"}",
|
||||
format("if( // This is some comment\n"
|
||||
" // spanning two lines\n"
|
||||
" x + 3) {\n"
|
||||
"}"));
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, KeepsParameterWithTrailingCommentsOnTheirOwnLine) {
|
||||
|
|
Loading…
Reference in New Issue