mirror of
https://github.com/llvm/llvm-project.git
synced 2025-05-02 23:56:05 +00:00
[clang-format] Break non-trailing block comments
Summary: This patch is an alternative to https://reviews.llvm.org/D36614, by resolving a non-idempotency issue by breaking non-trailing comments: Consider formatting the following code with column limit at `V`: ``` V const /* comment comment */ A = B; ``` The comment is not a trailing comment, breaking before it doesn't bring it under the column limit. The formatter breaks after it, resulting in: ``` V const /* comment comment */ A = B; ``` For a next reformat, the formatter considers the comment as a trailing comment, so it is free to break it further, resulting in: ``` V const /* comment comment */ A = B; ``` This patch improves the situation by directly producing the third case. Reviewers: djasper Reviewed By: djasper Subscribers: cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D37007 llvm-svn: 311457
This commit is contained in:
parent
5fb51ddf29
commit
fe268fc1c8
@ -1282,7 +1282,7 @@ unsigned ContinuationIndenter::breakProtrudingToken(const FormatToken &Current,
|
||||
return 0;
|
||||
}
|
||||
} else if (Current.is(TT_BlockComment)) {
|
||||
if (!Current.isTrailingComment() || !Style.ReflowComments ||
|
||||
if (!Style.ReflowComments ||
|
||||
// If a comment token switches formatting, like
|
||||
// /* clang-format on */, we don't want to break it further,
|
||||
// but we may still want to adjust its indentation.
|
||||
|
@ -2780,6 +2780,22 @@ TEST_F(FormatTestComments, AlignsBlockCommentDecorations) {
|
||||
"* long */",
|
||||
getLLVMStyleWithColumns(20)));
|
||||
}
|
||||
|
||||
TEST_F(FormatTestComments, NonTrailingBlockComments) {
|
||||
verifyFormat("const /** comment comment */ A = B;",
|
||||
getLLVMStyleWithColumns(40));
|
||||
|
||||
verifyFormat("const /** comment comment comment */ A =\n"
|
||||
" B;",
|
||||
getLLVMStyleWithColumns(40));
|
||||
|
||||
EXPECT_EQ("const /** comment comment comment\n"
|
||||
" comment */\n"
|
||||
" A = B;",
|
||||
format("const /** comment comment comment comment */\n"
|
||||
" A = B;",
|
||||
getLLVMStyleWithColumns(40)));
|
||||
}
|
||||
} // end namespace
|
||||
} // end namespace format
|
||||
} // end namespace clang
|
||||
|
Loading…
x
Reference in New Issue
Block a user