]> granicus.if.org Git - clang/commitdiff
[clang-format] Don't reflow comment lines starting with '@'.
authorKrasimir Georgiev <krasimir@google.com>
Tue, 31 Jan 2017 11:38:02 +0000 (11:38 +0000)
committerKrasimir Georgiev <krasimir@google.com>
Tue, 31 Jan 2017 11:38:02 +0000 (11:38 +0000)
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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@293617 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/BreakableToken.cpp
unittests/Format/FormatTest.cpp

index 95d1a63dfa85ef9ce38e6fbc3e7472581e056c0c..dd28ba7d4a28ee06f8b5cca57c420b990292572e 100644 (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]));
index 4d4b64b20b31927120668b18764cd634895c2c6f..7348fa030df1d53552e6e3a2ded93ab389efb50b 100644 (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"