[clang] 4ad41f1 - Revert "[clang-format] Add option to control the spaces in a line comment"

Björn Schäpers via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 29 00:31:29 PST 2021


Author: Björn Schäpers
Date: 2021-01-29T09:30:52+01:00
New Revision: 4ad41f1daf0fa98a2c23fdf57390df0948164a2f

URL: https://github.com/llvm/llvm-project/commit/4ad41f1daf0fa98a2c23fdf57390df0948164a2f
DIFF: https://github.com/llvm/llvm-project/commit/4ad41f1daf0fa98a2c23fdf57390df0948164a2f.diff

LOG: Revert "[clang-format] Add option to control the spaces in a line comment"

This reverts commit 078f30e04d1fcb5a05d8e340f3178f3478075541.

Added: 
    

Modified: 
    clang/docs/ClangFormatStyleOptions.rst
    clang/docs/ReleaseNotes.rst
    clang/include/clang/Format/Format.h
    clang/lib/Format/BreakableToken.cpp
    clang/lib/Format/BreakableToken.h
    clang/lib/Format/Format.cpp
    clang/lib/Format/NamespaceEndCommentsFixer.cpp
    clang/unittests/Format/FormatTest.cpp
    clang/unittests/Format/FormatTestComments.cpp

Removed: 
    


################################################################################
diff  --git a/clang/docs/ClangFormatStyleOptions.rst b/clang/docs/ClangFormatStyleOptions.rst
index a28efa5dad04..3458575119e2 100644
--- a/clang/docs/ClangFormatStyleOptions.rst
+++ b/clang/docs/ClangFormatStyleOptions.rst
@@ -3335,43 +3335,6 @@ the configuration (without a prefix: ``Auto``).
      var arr = [ 1, 2, 3 ];         vs.     var arr = [1, 2, 3];
      f({a : 1, b : 2, c : 3});              f({a: 1, b: 2, c: 3});
 
-**SpacesInLineCommentPrefix** (``SpacesInLineComment``)
-  How many spaces are allowed at the start of a line comment. To disable the
-  maximum set it to ``-1``, apart from that the maximum takes precedence
-  over the minimum.
-  Minimum = 1 Maximum = -1
-  // One space is forced
-
-  //  but more spaces are possible
-
-  Minimum = 0
-  Maximum = 0
-  //Forces to start every comment directly after the slashes
-
-  Note that in line comment sections the relative indent of the subsequent
-  lines is kept, that means the following:
-
-  .. code-block:: c++
-
-  before:                                   after:
-  Minimum: 1
-  //if (b) {                                // if (b) {
-  //  return true;                          //   return true;
-  //}                                       // }
-
-  Maximum: 0
-  /// List:                                 ///List:
-  ///  - Foo                                /// - Foo
-  ///    - Bar                              ///   - Bar
-
-  Nested configuration flags:
-
-
-  * ``unsigned Minimum`` The minimum number of spaces at the start of the comment.
-
-  * ``unsigned Maximum`` The maximum number of spaces at the start of the comment.
-
-
 **SpacesInParentheses** (``bool``)
   If ``true``, spaces will be inserted after ``(`` and before ``)``.
 

diff  --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index c5b93718b0a1..454355af4c41 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -158,9 +158,6 @@ clang-format
 
 - ...
 
-- Option ``SpacesInLineCommentPrefix`` has been added to control the
-  number of spaces in a line comments prefix.
-
 
 libclang
 --------

diff  --git a/clang/include/clang/Format/Format.h b/clang/include/clang/Format/Format.h
index 269707fedaac..96c2a74e97db 100644
--- a/clang/include/clang/Format/Format.h
+++ b/clang/include/clang/Format/Format.h
@@ -2894,43 +2894,6 @@ struct FormatStyle {
   /// \endcode
   bool SpacesInCStyleCastParentheses;
 
-  /// Control of spaces within a single line comment
-  struct SpacesInLineComment {
-    /// The minimum number of spaces at the start of the comment.
-    unsigned Minimum;
-    /// The maximum number of spaces at the start of the comment.
-    unsigned Maximum;
-  };
-
-  /// How many spaces are allowed at the start of a line comment. To disable the
-  /// maximum set it to ``-1``, apart from that the maximum takes precedence
-  /// over the minimum.
-  /// \code Minimum = 1 Maximum = -1
-  /// // One space is forced
-  ///
-  /// //  but more spaces are possible
-  ///
-  /// Minimum = 0
-  /// Maximum = 0
-  /// //Forces to start every comment directly after the slashes
-  /// \endcode
-  ///
-  /// Note that in line comment sections the relative indent of the subsequent
-  /// lines is kept, that means the following:
-  /// \code
-  /// before:                                   after:
-  /// Minimum: 1
-  /// //if (b) {                                // if (b) {
-  /// //  return true;                          //   return true;
-  /// //}                                       // }
-  ///
-  /// Maximum: 0
-  /// /// List:                                 ///List:
-  /// ///  - Foo                                /// - Foo
-  /// ///    - Bar                              ///   - Bar
-  /// \endcode
-  SpacesInLineComment SpacesInLineCommentPrefix;
-
   /// If ``true``, spaces will be inserted after ``(`` and before ``)``.
   /// \code
   ///    true:                                  false:
@@ -3182,10 +3145,6 @@ struct FormatStyle {
            SpacesInConditionalStatement == R.SpacesInConditionalStatement &&
            SpacesInContainerLiterals == R.SpacesInContainerLiterals &&
            SpacesInCStyleCastParentheses == R.SpacesInCStyleCastParentheses &&
-           SpacesInLineCommentPrefix.Minimum ==
-               R.SpacesInLineCommentPrefix.Minimum &&
-           SpacesInLineCommentPrefix.Maximum ==
-               R.SpacesInLineCommentPrefix.Maximum &&
            SpacesInParentheses == R.SpacesInParentheses &&
            SpacesInSquareBrackets == R.SpacesInSquareBrackets &&
            SpaceBeforeSquareBrackets == R.SpaceBeforeSquareBrackets &&

diff  --git a/clang/lib/Format/BreakableToken.cpp b/clang/lib/Format/BreakableToken.cpp
index c581a9727d31..f179ac64de17 100644
--- a/clang/lib/Format/BreakableToken.cpp
+++ b/clang/lib/Format/BreakableToken.cpp
@@ -757,9 +757,6 @@ BreakableLineCommentSection::BreakableLineCommentSection(
   assert(Tok.is(TT_LineComment) &&
          "line comment section must start with a line comment");
   FormatToken *LineTok = nullptr;
-  // How many spaces we changed in the first line of the section, this will be
-  // applied in all following lines
-  int FirstLineSpaceChange = 0;
   for (const FormatToken *CurrentTok = &Tok;
        CurrentTok && CurrentTok->is(TT_LineComment);
        CurrentTok = CurrentTok->Next) {
@@ -771,71 +768,44 @@ BreakableLineCommentSection::BreakableLineCommentSection(
     TokenText.split(Lines, "\n");
     Content.resize(Lines.size());
     ContentColumn.resize(Lines.size());
-    PrefixSpaceChange.resize(Lines.size());
+    OriginalContentColumn.resize(Lines.size());
     Tokens.resize(Lines.size());
     Prefix.resize(Lines.size());
     OriginalPrefix.resize(Lines.size());
     for (size_t i = FirstLineIndex, e = Lines.size(); i < e; ++i) {
       Lines[i] = Lines[i].ltrim(Blanks);
       StringRef IndentPrefix = getLineCommentIndentPrefix(Lines[i], Style);
-      OriginalPrefix[i] = IndentPrefix;
-      const unsigned SpacesInPrefix =
-          std::count(IndentPrefix.begin(), IndentPrefix.end(), ' ');
-
-      // On the first line of the comment section we calculate how many spaces
-      // are to be added or removed, all lines after that just get only the
-      // change and we will not look at the maximum anymore. Additionally to the
-      // actual first line, we calculate that when the non space Prefix changes,
-      // e.g. from "///" to "//".
-      if (i == 0 || OriginalPrefix[i].rtrim(Blanks) !=
-                        OriginalPrefix[i - 1].rtrim(Blanks)) {
-        if (SpacesInPrefix < Style.SpacesInLineCommentPrefix.Minimum &&
-            Lines[i].size() > IndentPrefix.size() &&
-            isAlphanumeric(Lines[i][IndentPrefix.size()])) {
-          FirstLineSpaceChange =
-              Style.SpacesInLineCommentPrefix.Minimum - SpacesInPrefix;
-        } else if (SpacesInPrefix > Style.SpacesInLineCommentPrefix.Maximum) {
-          FirstLineSpaceChange =
-              Style.SpacesInLineCommentPrefix.Maximum - SpacesInPrefix;
-        } else {
-          FirstLineSpaceChange = 0;
-        }
-      }
-
-      if (Lines[i].size() != IndentPrefix.size()) {
-        PrefixSpaceChange[i] = FirstLineSpaceChange;
-
-        if (SpacesInPrefix + PrefixSpaceChange[i] <
-            Style.SpacesInLineCommentPrefix.Minimum) {
-          PrefixSpaceChange[i] += Style.SpacesInLineCommentPrefix.Minimum -
-                                  (SpacesInPrefix + PrefixSpaceChange[i]);
-        }
-
-        assert(Lines[i].size() > IndentPrefix.size());
-        const auto FirstNonSpace = Lines[i][IndentPrefix.size()];
-        const auto AllowsSpaceChange =
-            SpacesInPrefix != 0 ||
-            (isAlphanumeric(FirstNonSpace) || FirstNonSpace == '}');
-
-        if (PrefixSpaceChange[i] > 0 && AllowsSpaceChange) {
-          Prefix[i] = IndentPrefix.str();
-          Prefix[i].append(PrefixSpaceChange[i], ' ');
-        } else if (PrefixSpaceChange[i] < 0 && AllowsSpaceChange) {
-          Prefix[i] = IndentPrefix
-                          .drop_back(std::min<std::size_t>(
-                              -PrefixSpaceChange[i], SpacesInPrefix))
-                          .str();
-        } else {
-          Prefix[i] = IndentPrefix.str();
-        }
-      } else {
-        // If the IndentPrefix is the whole line, there is no content and we
-        // drop just all space
-        Prefix[i] = IndentPrefix.drop_back(SpacesInPrefix).str();
+      assert((TokenText.startswith("//") || TokenText.startswith("#")) &&
+             "unsupported line comment prefix, '//' and '#' are supported");
+      OriginalPrefix[i] = Prefix[i] = IndentPrefix;
+      if (Lines[i].size() > Prefix[i].size() &&
+          isAlphanumeric(Lines[i][Prefix[i].size()])) {
+        if (Prefix[i] == "//")
+          Prefix[i] = "// ";
+        else if (Prefix[i] == "///")
+          Prefix[i] = "/// ";
+        else if (Prefix[i] == "//!")
+          Prefix[i] = "//! ";
+        else if (Prefix[i] == "///<")
+          Prefix[i] = "///< ";
+        else if (Prefix[i] == "//!<")
+          Prefix[i] = "//!< ";
+        else if (Prefix[i] == "#")
+          Prefix[i] = "# ";
+        else if (Prefix[i] == "##")
+          Prefix[i] = "## ";
+        else if (Prefix[i] == "###")
+          Prefix[i] = "### ";
+        else if (Prefix[i] == "####")
+          Prefix[i] = "#### ";
       }
 
       Tokens[i] = LineTok;
       Content[i] = Lines[i].substr(IndentPrefix.size());
+      OriginalContentColumn[i] =
+          StartColumn + encoding::columnWidthWithTabs(OriginalPrefix[i],
+                                                      StartColumn,
+                                                      Style.TabWidth, Encoding);
       ContentColumn[i] =
           StartColumn + encoding::columnWidthWithTabs(Prefix[i], StartColumn,
                                                       Style.TabWidth, Encoding);
@@ -878,9 +848,10 @@ BreakableLineCommentSection::getRangeLength(unsigned LineIndex, unsigned Offset,
       Encoding);
 }
 
-unsigned
-BreakableLineCommentSection::getContentStartColumn(unsigned LineIndex,
-                                                   bool /*Break*/) const {
+unsigned BreakableLineCommentSection::getContentStartColumn(unsigned LineIndex,
+                                                            bool Break) const {
+  if (Break)
+    return OriginalContentColumn[LineIndex];
   return ContentColumn[LineIndex];
 }
 
@@ -893,10 +864,16 @@ void BreakableLineCommentSection::insertBreak(
   unsigned BreakOffsetInToken =
       Text.data() - tokenAt(LineIndex).TokenText.data() + Split.first;
   unsigned CharsToRemove = Split.second;
+  // Compute the size of the new indent, including the size of the new prefix of
+  // the newly broken line.
+  unsigned IndentAtLineBreak = OriginalContentColumn[LineIndex] +
+                               Prefix[LineIndex].size() -
+                               OriginalPrefix[LineIndex].size();
+  assert(IndentAtLineBreak >= Prefix[LineIndex].size());
   Whitespaces.replaceWhitespaceInToken(
       tokenAt(LineIndex), BreakOffsetInToken, CharsToRemove, "",
       Prefix[LineIndex], InPPDirective, /*Newlines=*/1,
-      /*Spaces=*/ContentColumn[LineIndex] - Prefix[LineIndex].size());
+      /*Spaces=*/IndentAtLineBreak - Prefix[LineIndex].size());
 }
 
 BreakableComment::Split BreakableLineCommentSection::getReflowSplit(
@@ -994,12 +971,14 @@ void BreakableLineCommentSection::adaptStartOfLine(
   }
   if (OriginalPrefix[LineIndex] != Prefix[LineIndex]) {
     // Adjust the prefix if necessary.
-    const auto SpacesToRemove = -std::min(PrefixSpaceChange[LineIndex], 0);
-    const auto SpacesToAdd = std::max(PrefixSpaceChange[LineIndex], 0);
+
+    // Take care of the space possibly introduced after a decoration.
+    assert(Prefix[LineIndex] == (OriginalPrefix[LineIndex] + " ").str() &&
+           "Expecting a line comment prefix to 
diff er from original by at most "
+           "a space");
     Whitespaces.replaceWhitespaceInToken(
-        tokenAt(LineIndex), OriginalPrefix[LineIndex].size() - SpacesToRemove,
-        /*ReplaceChars=*/SpacesToRemove, "", "", -/*InPPDirective=*/false,
-        /*Newlines=*/0, /*Spaces=*/SpacesToAdd);
+        tokenAt(LineIndex), OriginalPrefix[LineIndex].size(), 0, "", "",
+        /*InPPDirective=*/false, /*Newlines=*/0, /*Spaces=*/1);
   }
 }
 

diff  --git a/clang/lib/Format/BreakableToken.h b/clang/lib/Format/BreakableToken.h
index 190144ad1be9..41b19f82e9df 100644
--- a/clang/lib/Format/BreakableToken.h
+++ b/clang/lib/Format/BreakableToken.h
@@ -465,23 +465,15 @@ class BreakableLineCommentSection : public BreakableComment {
   // then the original prefix is "// ".
   SmallVector<StringRef, 16> OriginalPrefix;
 
-  /// Prefix[i] + SpacesToAdd[i] contains the intended leading "//" with
-  /// trailing spaces to account for the indentation of content within the
-  /// comment at line i after formatting. It can be 
diff erent than the original
-  /// prefix.
-  /// When the original line starts like this:
-  /// //content
-  /// Then the OriginalPrefix[i] is "//", but the Prefix[i] is "// " in the LLVM
-  /// style.
-  /// When the line starts like:
-  /// // content
-  /// And we want to remove the spaces the OriginalPrefix[i] is "// " and
-  /// Prefix[i] is "//".
-  SmallVector<std::string, 16> Prefix;
-
-  /// How many spaces are added or removed from the OriginalPrefix to form
-  /// Prefix.
-  SmallVector<int, 16> PrefixSpaceChange;
+  // Prefix[i] contains the intended leading "//" with trailing spaces to
+  // account for the indentation of content within the comment at line i after
+  // formatting. It can be 
diff erent than the original prefix when the original
+  // line starts like this:
+  // //content
+  // Then the original prefix is "//", but the prefix is "// ".
+  SmallVector<StringRef, 16> Prefix;
+
+  SmallVector<unsigned, 16> OriginalContentColumn;
 
   /// The token to which the last line of this breakable token belongs
   /// to; nullptr if that token is the initial token.

diff  --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp
index 16a42f2d97c4..5f5bb8585ac1 100644
--- a/clang/lib/Format/Format.cpp
+++ b/clang/lib/Format/Format.cpp
@@ -661,8 +661,6 @@ template <> struct MappingTraits<FormatStyle> {
                    Style.SpacesInContainerLiterals);
     IO.mapOptional("SpacesInCStyleCastParentheses",
                    Style.SpacesInCStyleCastParentheses);
-    IO.mapOptional("SpacesInLineCommentPrefix",
-                   Style.SpacesInLineCommentPrefix);
     IO.mapOptional("SpacesInParentheses", Style.SpacesInParentheses);
     IO.mapOptional("SpacesInSquareBrackets", Style.SpacesInSquareBrackets);
     IO.mapOptional("SpaceBeforeSquareBrackets",
@@ -712,20 +710,6 @@ template <> struct MappingTraits<FormatStyle::RawStringFormat> {
   }
 };
 
-template <> struct MappingTraits<FormatStyle::SpacesInLineComment> {
-  static void mapping(IO &IO, FormatStyle::SpacesInLineComment &Space) {
-    // Transform the maximum to signed, to parse "-1" correctly
-    int signedMaximum = static_cast<int>(Space.Maximum);
-    IO.mapOptional("Minimum", Space.Minimum);
-    IO.mapOptional("Maximum", signedMaximum);
-    Space.Maximum = static_cast<unsigned>(signedMaximum);
-
-    if (Space.Maximum != -1u) {
-      Space.Minimum = std::min(Space.Minimum, Space.Maximum);
-    }
-  }
-};
-
 // Allows to read vector<FormatStyle> while keeping default values.
 // IO.getContext() should contain a pointer to the FormatStyle structure, that
 // will be used to get default values for missing keys.
@@ -1002,7 +986,6 @@ FormatStyle getLLVMStyle(FormatStyle::LanguageKind Language) {
   LLVMStyle.SpaceInEmptyParentheses = false;
   LLVMStyle.SpacesInContainerLiterals = true;
   LLVMStyle.SpacesInCStyleCastParentheses = false;
-  LLVMStyle.SpacesInLineCommentPrefix = {/*Minimum=*/1, /*Maximum=*/-1u};
   LLVMStyle.SpaceAfterCStyleCast = false;
   LLVMStyle.SpaceAfterLogicalNot = false;
   LLVMStyle.SpaceAfterTemplateKeyword = true;

diff  --git a/clang/lib/Format/NamespaceEndCommentsFixer.cpp b/clang/lib/Format/NamespaceEndCommentsFixer.cpp
index c5bb6e9eab5d..97de45bd1965 100644
--- a/clang/lib/Format/NamespaceEndCommentsFixer.cpp
+++ b/clang/lib/Format/NamespaceEndCommentsFixer.cpp
@@ -66,10 +66,8 @@ std::string computeName(const FormatToken *NamespaceTok) {
 }
 
 std::string computeEndCommentText(StringRef NamespaceName, bool AddNewline,
-                                  const FormatToken *NamespaceTok,
-                                  unsigned SpacesToAdd) {
-  std::string text = "//";
-  text.append(SpacesToAdd, ' ');
+                                  const FormatToken *NamespaceTok) {
+  std::string text = "// ";
   text += NamespaceTok->TokenText;
   if (NamespaceTok->is(TT_NamespaceMacro))
     text += "(";
@@ -280,8 +278,7 @@ std::pair<tooling::Replacements, unsigned> NamespaceEndCommentsFixer::analyze(
                       EndCommentNextTok->NewlinesBefore == 0 &&
                       EndCommentNextTok->isNot(tok::eof);
     const std::string EndCommentText =
-        computeEndCommentText(NamespaceName, AddNewline, NamespaceTok,
-                              Style.SpacesInLineCommentPrefix.Minimum);
+        computeEndCommentText(NamespaceName, AddNewline, NamespaceTok);
     if (!hasEndComment(EndCommentPrevTok)) {
       bool isShort = I - StartLineIndex <= kShortNamespaceMaxLines + 1;
       if (!isShort)

diff  --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index 1090f0ca8ee2..c1f88b9ae17a 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -15994,26 +15994,6 @@ TEST_F(FormatTest, ParsesConfiguration) {
               "      - 'CPPEVAL'\n"
               "    CanonicalDelimiter: 'cc'",
               RawStringFormats, ExpectedRawStringFormats);
-
-  CHECK_PARSE("SpacesInLineCommentPrefix:\n"
-              "  Minimum: 0\n"
-              "  Maximum: 0",
-              SpacesInLineCommentPrefix.Minimum, 0u);
-  EXPECT_EQ(Style.SpacesInLineCommentPrefix.Maximum, 0u);
-  Style.SpacesInLineCommentPrefix.Minimum = 1;
-  CHECK_PARSE("SpacesInLineCommentPrefix:\n"
-              "  Minimum: 2",
-              SpacesInLineCommentPrefix.Minimum, 0u);
-  CHECK_PARSE("SpacesInLineCommentPrefix:\n"
-              "  Maximum: -1",
-              SpacesInLineCommentPrefix.Maximum, -1u);
-  CHECK_PARSE("SpacesInLineCommentPrefix:\n"
-              "  Minimum: 2",
-              SpacesInLineCommentPrefix.Minimum, 2u);
-  CHECK_PARSE("SpacesInLineCommentPrefix:\n"
-              "  Maximum: 1",
-              SpacesInLineCommentPrefix.Maximum, 1u);
-  EXPECT_EQ(Style.SpacesInLineCommentPrefix.Minimum, 1u);
 }
 
 TEST_F(FormatTest, ParsesConfigurationWithLanguages) {

diff  --git a/clang/unittests/Format/FormatTestComments.cpp b/clang/unittests/Format/FormatTestComments.cpp
index 43869f7f5a67..457e7321ec75 100644
--- a/clang/unittests/Format/FormatTestComments.cpp
+++ b/clang/unittests/Format/FormatTestComments.cpp
@@ -3144,7 +3144,7 @@ TEST_F(FormatTestComments, PythonStyleComments) {
             "      # commen6\n"
             "      # commen7",
             format("k:val#commen1 commen2\n"
-                   " #commen3\n"
+                   " # commen3\n"
                    "# commen4\n"
                    "a:1#commen5 commen6\n"
                    " #commen7",
@@ -3275,506 +3275,6 @@ TEST_F(FormatTestComments, IndentsLongJavadocAnnotatedLines) {
                    JSStyle20));
 }
 
-TEST_F(FormatTestComments, SpaceAtLineCommentBegin) {
-  FormatStyle Style = getLLVMStyle();
-  StringRef NoTextInComment = " //       \n"
-                              "\n"
-                              "void foo() {// \n"
-                              "// \n"
-                              "}";
-
-  EXPECT_EQ("//\n"
-            "\n"
-            "void foo() { //\n"
-            "  //\n"
-            "}",
-            format(NoTextInComment, Style));
-
-  Style.SpacesInLineCommentPrefix.Minimum = 0;
-  EXPECT_EQ("//\n"
-            "\n"
-            "void foo() { //\n"
-            "  //\n"
-            "}",
-            format(NoTextInComment, Style));
-
-  Style.SpacesInLineCommentPrefix.Minimum = 5;
-  EXPECT_EQ("//\n"
-            "\n"
-            "void foo() { //\n"
-            "  //\n"
-            "}",
-            format(NoTextInComment, Style));
-
-  Style = getLLVMStyle();
-  StringRef Code =
-      "//Free comment without space\n"
-      "\n"
-      "//   Free comment with 3 spaces\n"
-      "\n"
-      "///Free Doxygen without space\n"
-      "\n"
-      "///   Free Doxygen with 3 spaces\n"
-      "\n"
-      "/// A Doxygen Comment with a nested list:\n"
-      "/// - Foo\n"
-      "/// - Bar\n"
-      "///   - Baz\n"
-      "///   - End\n"
-      "///     of the inner list\n"
-      "///   .\n"
-      "/// .\n"
-      "\n"
-      "namespace Foo {\n"
-      "bool bar(bool b) {\n"
-      "  bool ret1 = true; ///<Doxygenstyle without space\n"
-      "  bool ret2 = true; ///<   Doxygenstyle with 3 spaces\n"
-      "  if (b) {\n"
-      "    //Foo\n"
-      "\n"
-      "    //   In function comment\n"
-      "    ret2 = false;\n"
-      "  } // End of if\n"
-      "\n"
-      "//  if (ret1) {\n" // Commented out at the beginning of the line
-      "//    return ret2;\n"
-      "//  }\n"
-      "\n"
-      "  //if (ret1) {\n" // Commtented out at the beginning of the content
-      "  //  return ret2;\n"
-      "  //}\n"
-      "\n"
-      "  return ret1 && ret2;\n"
-      "}\n"
-      "}\n"
-      "\n"
-      "namespace Bar {\n"
-      "int foo();\n"
-      "} //  namespace Bar\n"
-      "//@Nothing added because of the non ascii char\n"
-      "\n"
-      "//@      Nothing removed because of the non ascii char\n"
-      "\n"
-      "//  Comment to move to the left\n"
-      "//But not this?\n"
-      "//  @but this\n"
-      "\n"
-      "//Comment to move to the right\n"
-      "//@ this stays\n";
-
-  EXPECT_EQ("// Free comment without space\n"
-            "\n"
-            "//   Free comment with 3 spaces\n"
-            "\n"
-            "/// Free Doxygen without space\n"
-            "\n"
-            "///   Free Doxygen with 3 spaces\n"
-            "\n"
-            "/// A Doxygen Comment with a nested list:\n"
-            "/// - Foo\n"
-            "/// - Bar\n"
-            "///   - Baz\n"
-            "///   - End\n"
-            "///     of the inner list\n"
-            "///   .\n"
-            "/// .\n"
-            "\n"
-            "namespace Foo {\n"
-            "bool bar(bool b) {\n"
-            "  bool ret1 = true; ///< Doxygenstyle without space\n"
-            "  bool ret2 = true; ///<   Doxygenstyle with 3 spaces\n"
-            "  if (b) {\n"
-            "    // Foo\n"
-            "\n"
-            "    //   In function comment\n"
-            "    ret2 = false;\n"
-            "  } // End of if\n"
-            "\n"
-            "  //  if (ret1) {\n"
-            "  //    return ret2;\n"
-            "  //  }\n"
-            "\n"
-            "  // if (ret1) {\n"
-            "  //   return ret2;\n"
-            "  // }\n"
-            "\n"
-            "  return ret1 && ret2;\n"
-            "}\n"
-            "} // namespace Foo\n"
-            "\n"
-            "namespace Bar {\n"
-            "int foo();\n"
-            "} //  namespace Bar\n"
-            "//@Nothing added because of the non ascii char\n"
-            "\n"
-            "//@      Nothing removed because of the non ascii char\n"
-            "\n"
-            "//  Comment to move to the left\n"
-            "// But not this?\n"
-            "//  @but this\n"
-            "\n"
-            "// Comment to move to the right\n"
-            "//@ this stays\n",
-            format(Code, Style));
-
-  Style.SpacesInLineCommentPrefix = {0, 0};
-  EXPECT_EQ("//Free comment without space\n"
-            "\n"
-            "//Free comment with 3 spaces\n"
-            "\n"
-            "///Free Doxygen without space\n"
-            "\n"
-            "///Free Doxygen with 3 spaces\n"
-            "\n"
-            "///A Doxygen Comment with a nested list:\n"
-            "///- Foo\n"
-            "///- Bar\n"
-            "///  - Baz\n" // Here we keep the relative indentation
-            "///  - End\n"
-            "///    of the inner list\n"
-            "///  .\n"
-            "///.\n"
-            "\n"
-            "namespace Foo {\n"
-            "bool bar(bool b) {\n"
-            "  bool ret1 = true; ///<Doxygenstyle without space\n"
-            "  bool ret2 = true; ///<Doxygenstyle with 3 spaces\n"
-            "  if (b) {\n"
-            "    //Foo\n"
-            "\n"
-            "    //In function comment\n"
-            "    ret2 = false;\n"
-            "  } //End of if\n"
-            "\n"
-            "  //if (ret1) {\n"
-            "  //  return ret2;\n"
-            "  //}\n"
-            "\n"
-            "  //if (ret1) {\n"
-            "  //  return ret2;\n"
-            "  //}\n"
-            "\n"
-            "  return ret1 && ret2;\n"
-            "}\n"
-            "} //namespace Foo\n"
-            "\n"
-            "namespace Bar {\n"
-            "int foo();\n"
-            "} //namespace Bar\n"
-            "//@Nothing added because of the non ascii char\n"
-            "\n"
-            "//@      Nothing removed because of the non ascii char\n"
-            "\n"
-            "//Comment to move to the left\n"
-            "//But not this?\n"
-            "//@but this\n"
-            "\n"
-            "//Comment to move to the right\n"
-            "//@ this stays\n",
-            format(Code, Style));
-
-  Style.SpacesInLineCommentPrefix = {2, -1u};
-  EXPECT_EQ("//  Free comment without space\n"
-            "\n"
-            "//   Free comment with 3 spaces\n"
-            "\n"
-            "///  Free Doxygen without space\n"
-            "\n"
-            "///   Free Doxygen with 3 spaces\n"
-            "\n"
-            "///  A Doxygen Comment with a nested list:\n"
-            "///  - Foo\n"
-            "///  - Bar\n"
-            "///    - Baz\n"
-            "///    - End\n"
-            "///      of the inner list\n"
-            "///    .\n"
-            "///  .\n"
-            "\n"
-            "namespace Foo {\n"
-            "bool bar(bool b) {\n"
-            "  bool ret1 = true; ///<  Doxygenstyle without space\n"
-            "  bool ret2 = true; ///<   Doxygenstyle with 3 spaces\n"
-            "  if (b) {\n"
-            "    //  Foo\n"
-            "\n"
-            "    //   In function comment\n"
-            "    ret2 = false;\n"
-            "  } //  End of if\n"
-            "\n"
-            "  //  if (ret1) {\n"
-            "  //    return ret2;\n"
-            "  //  }\n"
-            "\n"
-            "  //  if (ret1) {\n"
-            "  //    return ret2;\n"
-            "  //  }\n"
-            "\n"
-            "  return ret1 && ret2;\n"
-            "}\n"
-            "} //  namespace Foo\n"
-            "\n"
-            "namespace Bar {\n"
-            "int foo();\n"
-            "} //  namespace Bar\n"
-            "//@Nothing added because of the non ascii char\n"
-            "\n"
-            "//@      Nothing removed because of the non ascii char\n"
-            "\n"
-            "//  Comment to move to the left\n"
-            "//  But not this?\n"
-            "//  @but this\n"
-            "\n"
-            "//  Comment to move to the right\n"
-            "//@ this stays\n",
-            format(Code, Style));
-
-  Style = getLLVMStyleWithColumns(20);
-  StringRef WrapCode = "//Lorem ipsum dolor sit amet\n"
-                       "\n"
-                       "//  Lorem   ipsum   dolor   sit   amet\n"
-                       "\n"
-                       "void f() {//Hello World\n"
-                       "}";
-
-  EXPECT_EQ("// Lorem ipsum dolor\n"
-            "// sit amet\n"
-            "\n"
-            "//  Lorem   ipsum\n"
-            "//  dolor   sit amet\n"
-            "\n"
-            "void f() { // Hello\n"
-            "           // World\n"
-            "}",
-            format(WrapCode, Style));
-
-  Style.SpacesInLineCommentPrefix = {0, 0};
-  EXPECT_EQ("//Lorem ipsum dolor\n"
-            "//sit amet\n"
-            "\n"
-            "//Lorem   ipsum\n"
-            "//dolor   sit   amet\n"
-            "\n"
-            "void f() { //Hello\n"
-            "           //World\n"
-            "}",
-            format(WrapCode, Style));
-
-  Style.SpacesInLineCommentPrefix = {1, 1};
-  EXPECT_EQ("// Lorem ipsum dolor\n"
-            "// sit amet\n"
-            "\n"
-            "// Lorem   ipsum\n"
-            "// dolor   sit amet\n"
-            "\n"
-            "void f() { // Hello\n"
-            "           // World\n"
-            "}",
-            format(WrapCode, Style));
-
-  Style.SpacesInLineCommentPrefix = {3, 3};
-  EXPECT_EQ("//   Lorem ipsum\n"
-            "//   dolor sit amet\n"
-            "\n"
-            "//   Lorem   ipsum\n"
-            "//   dolor   sit\n"
-            "//   amet\n"
-            "\n"
-            "void f() { //   Hello\n"
-            "           //   World\n"
-            "}",
-            format(WrapCode, Style));
-
-  Style = getLLVMStyleWithColumns(20);
-  StringRef AShitloadOfSpaces = "//                      This are more spaces "
-                                "than the ColumnLimit, what now?\n"
-                                "\n"
-                                "//   Comment\n"
-                                "\n"
-                                "// This is a text to split in multiple "
-                                "lines, please. Thank you very much!\n"
-                                "\n"
-                                "// A comment with\n"
-                                "//   some indentation that has to be split.\n"
-                                "// And now without";
-  EXPECT_EQ("//                      This are more spaces "
-            "than the ColumnLimit, what now?\n"
-            "\n"
-            "//   Comment\n"
-            "\n"
-            "// This is a text to\n"
-            "// split in multiple\n"
-            "// lines, please.\n"
-            "// Thank you very\n"
-            "// much!\n"
-            "\n"
-            "// A comment with\n"
-            "//   some\n"
-            "//   indentation\n"
-            "//   that has to be\n"
-            "//   split.\n"
-            "// And now without",
-            format(AShitloadOfSpaces, Style));
-
-  Style.SpacesInLineCommentPrefix = {0, 0};
-  EXPECT_EQ("//This are more\n"
-            "//spaces than the\n"
-            "//ColumnLimit, what\n"
-            "//now?\n"
-            "\n"
-            "//Comment\n"
-            "\n"
-            "//This is a text to\n"
-            "//split in multiple\n"
-            "//lines, please.\n"
-            "//Thank you very\n"
-            "//much!\n"
-            "\n"
-            "//A comment with\n"
-            "//  some indentation\n"
-            "//  that has to be\n"
-            "//  split.\n"
-            "//And now without",
-            format(AShitloadOfSpaces, Style));
-
-  Style.SpacesInLineCommentPrefix = {3, 3};
-  EXPECT_EQ("//   This are more\n"
-            "//   spaces than the\n"
-            "//   ColumnLimit,\n"
-            "//   what now?\n"
-            "\n"
-            "//   Comment\n"
-            "\n"
-            "//   This is a text\n"
-            "//   to split in\n"
-            "//   multiple lines,\n"
-            "//   please. Thank\n"
-            "//   you very much!\n"
-            "\n"
-            "//   A comment with\n"
-            "//     some\n"
-            "//     indentation\n"
-            "//     that has to\n"
-            "//     be split.\n"
-            "//   And now without",
-            format(AShitloadOfSpaces, Style));
-
-  Style.SpacesInLineCommentPrefix = {30, -1u};
-  EXPECT_EQ("//                              This are more spaces than the "
-            "ColumnLimit, what now?\n"
-            "\n"
-            "//                              Comment\n"
-            "\n"
-            "//                              This is a text to split in "
-            "multiple lines, please. Thank you very much!\n"
-            "\n"
-            "//                              A comment with\n"
-            "//                                some indentation that has to be "
-            "split.\n"
-            "//                              And now without",
-            format(AShitloadOfSpaces, Style));
-
-  Style.SpacesInLineCommentPrefix = {2, 4};
-  EXPECT_EQ("//  A Comment to be\n"
-            "//  moved\n"
-            "//   with indent\n"
-            "\n"
-            "//  A Comment to be\n"
-            "//  moved\n"
-            "//   with indent\n"
-            "\n"
-            "//  A Comment to be\n"
-            "//  moved\n"
-            "//   with indent\n"
-            "\n"
-            "//   A Comment to be\n"
-            "//   moved\n"
-            "//    with indent\n"
-            "\n"
-            "//    A Comment to\n"
-            "//    be moved\n"
-            "//     with indent\n"
-            "\n"
-            "//    A Comment to\n"
-            "//    be moved\n"
-            "//     with indent\n"
-            "\n"
-            "//    A Comment to\n"
-            "//    be moved\n"
-            "//     with indent\n",
-            format("//A Comment to be moved\n"
-                   "// with indent\n"
-                   "\n"
-                   "// A Comment to be moved\n"
-                   "//  with indent\n"
-                   "\n"
-                   "//  A Comment to be moved\n"
-                   "//   with indent\n"
-                   "\n"
-                   "//   A Comment to be moved\n"
-                   "//    with indent\n"
-                   "\n"
-                   "//    A Comment to be moved\n"
-                   "//     with indent\n"
-                   "\n"
-                   "//     A Comment to be moved\n"
-                   "//      with indent\n"
-                   "\n"
-                   "//      A Comment to be moved\n"
-                   "//       with indent\n",
-                   Style));
-
-  Style.ColumnLimit = 30;
-  EXPECT_EQ("int i; //  A Comment to be\n"
-            "       //  moved\n"
-            "       //   with indent\n"
-            "\n"
-            "int i; //  A Comment to be\n"
-            "       //  moved\n"
-            "       //   with indent\n"
-            "\n"
-            "int i; //  A Comment to be\n"
-            "       //  moved\n"
-            "       //   with indent\n"
-            "\n"
-            "int i; //   A Comment to be\n"
-            "       //   moved\n"
-            "       //    with indent\n"
-            "\n"
-            "int i; //    A Comment to be\n"
-            "       //    moved\n"
-            "       //     with indent\n"
-            "\n"
-            "int i; //    A Comment to be\n"
-            "       //    moved\n"
-            "       //     with indent\n"
-            "\n"
-            "int i; //    A Comment to be\n"
-            "       //    moved\n"
-            "       //     with indent\n",
-            format("int i;//A Comment to be moved\n"
-                   "      // with indent\n"
-                   "\n"
-                   "int i;// A Comment to be moved\n"
-                   "      //  with indent\n"
-                   "\n"
-                   "int i;//  A Comment to be moved\n"
-                   "      //   with indent\n"
-                   "\n"
-                   "int i;//   A Comment to be moved\n"
-                   "      //    with indent\n"
-                   "\n"
-                   "int i;//    A Comment to be moved\n"
-                   "      //     with indent\n"
-                   "\n"
-                   "int i;//     A Comment to be moved\n"
-                   "      //      with indent\n"
-                   "\n"
-                   "int i;//      A Comment to be moved\n"
-                   "      //       with indent\n",
-                   Style));
-}
-
 } // end namespace
 } // end namespace format
 } // end namespace clang


        


More information about the cfe-commits mailing list