]> granicus.if.org Git - clang/commitdiff
Fix bug 20892 - clang-format does not handle C-style comments
authorRoman Kashitsyn <romankashicin@gmail.com>
Thu, 11 Sep 2014 14:47:20 +0000 (14:47 +0000)
committerRoman Kashitsyn <romankashicin@gmail.com>
Thu, 11 Sep 2014 14:47:20 +0000 (14:47 +0000)
Summary:
http://llvm.org/bugs/show_bug.cgi?id=20892

Add support of C-style formatting enabling/disabling directives. Now the following two styles are supported:

  // clang-format on
  /* clang-format on */

The flexibility in comments (support of extra spaces and/or slashes, etc.) is deliberately avoided to simplify search in large code bases.

Reviewers: djasper

Reviewed By: djasper

Subscribers: cfe-commits, curdeius, klimek

Differential Revision: http://reviews.llvm.org/D5309

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

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

index 5b2f222bfc5679481fd4600bdf3f21eaf2be6472..36d0f62a85453b70b0fe6f13b85614b0b07ec5ec 100644 (file)
@@ -1725,11 +1725,18 @@ private:
         Tok.Tok.setKind(tok::char_constant);
       }
     }
-    if (Tok.is(tok::comment) && Tok.TokenText == "// clang-format on")
+
+    if (Tok.is(tok::comment) && (Tok.TokenText == "// clang-format on" ||
+                                 Tok.TokenText == "/* clang-format on */")) {
       FormattingDisabled = false;
+    }
+
     Tok.Finalized = FormattingDisabled;
-    if (Tok.is(tok::comment) && Tok.TokenText == "// clang-format off")
+
+    if (Tok.is(tok::comment) && (Tok.TokenText == "// clang-format off" ||
+                                 Tok.TokenText == "/* clang-format off */")) {
       FormattingDisabled = true;
+    }
   }
 };
 
index 8b8aaf1b4a619cdea8d0dcbacb609e15bca25ddd..f8e318365bff7b2aa39ddcb3334607e3f4299ce9 100644 (file)
@@ -9355,6 +9355,16 @@ TEST_F(FormatTest, DisableRegions) {
                    "  int j;\n"
                    " // clang-format on\n"
                    "   int   k;"));
+  EXPECT_EQ("int i;\n"
+            "/* clang-format off */\n"
+            "  int j;\n"
+            "/* clang-format on */\n"
+            "int k;",
+            format(" int  i;\n"
+                   "   /* clang-format off */\n"
+                   "  int j;\n"
+                   " /* clang-format on */\n"
+                   "   int   k;"));
 }
 
 TEST_F(FormatTest, DoNotCrashOnInvalidInput) {