[clang-format] Don't reflow comment lines starting with '@'.

Summary:
This patch stops reflowing comment lines starting with '@', since they commonly
have a special meaning.

Reviewers: djasper

Reviewed By: djasper

Subscribers: cfe-commits, klimek

Differential Revision: https://reviews.llvm.org/D29323

llvm-svn: 293617
This commit is contained in:
Krasimir Georgiev 2017-01-31 11:38:02 +00:00
parent 7d42f3f746
commit 8f62cf74ef
2 changed files with 12 additions and 1 deletions

View File

@ -304,7 +304,9 @@ static bool mayReflowContent(StringRef Content) {
// Simple heuristic for what to reflow: content should contain at least two
// characters and either the first or second character must be
// non-punctuation.
return Content.size() >= 2 && !Content.endswith("\\") &&
return Content.size() >= 2 &&
// Lines starting with '@' commonly have special meaning.
!Content.startswith("@") && !Content.endswith("\\") &&
// Note that this is UTF-8 safe, since if isPunctuation(Content[0]) is
// true, then the first code point must be 1 byte long.
(!isPunctuation(Content[0]) || !isPunctuation(Content[1]));

View File

@ -2244,6 +2244,15 @@ TEST_F(FormatTest, ReflowsComments) {
"// long long long long\n"
"// ... --- ...",
getLLVMStyleWithColumns(20)));
// Don't reflow lines starting with '@'.
EXPECT_EQ("// long long long\n"
"// long\n"
"// @param arg",
format("// long long long long\n"
"// @param arg",
getLLVMStyleWithColumns(20)));
// Reflow lines that have a non-punctuation character among their first 2
// characters.
EXPECT_EQ("// long long long\n"