[clang] eb00839 - [clang-format] Ensure dump_format_style.py can generate ClangFormatStyleOptions.rst without manual intervention

via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 8 06:41:23 PST 2019


Author: paul_hoad
Date: 2019-11-08T14:40:36Z
New Revision: eb00839c6eb4f5dc6adadc83be93f32bd6143362

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

LOG: [clang-format] Ensure dump_format_style.py can generate ClangFormatStyleOptions.rst without manual intervention

Summary:
This revision is the last in a series of revisions to return `clang/doc/tools/dump_format_style.py` to be being able to parse Format.h without needing to manually merge the ClangFormatStyleOptions.rst file.

The final modification to dump_format_style.py is needed following the addition of a  nested enumeration inside a nested structure following the introduction of {D68296}

Prior  related revisions will allow for a fully clang-formatted `clang/include/clang/Format/Format.h` to once again be used at the source.
{D69951}
{D69433}
{D69404}

Reviewers: mitchell-stellar, klimek, sammccall, owenpan

Reviewed By: mitchell-stellar

Subscribers: cfe-commits

Tags: #clang-format, #clang

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

Added: 
    

Modified: 
    clang/docs/ClangFormatStyleOptions.rst
    clang/docs/tools/dump_format_style.py

Removed: 
    


################################################################################
diff  --git a/clang/docs/ClangFormatStyleOptions.rst b/clang/docs/ClangFormatStyleOptions.rst
index 1f915c346887..655923db9bc3 100644
--- a/clang/docs/ClangFormatStyleOptions.rst
+++ b/clang/docs/ClangFormatStyleOptions.rst
@@ -819,6 +819,7 @@ the configuration (without a prefix: ``Auto``).
         for (int i = 0; i < 10; ++i)
         {}
 
+
   * ``bool AfterEnum`` Wrap enum definitions.
 
     .. code-block:: c++

diff  --git a/clang/docs/tools/dump_format_style.py b/clang/docs/tools/dump_format_style.py
index db65e6e65b1c..acb0dfcaf4a7 100755
--- a/clang/docs/tools/dump_format_style.py
+++ b/clang/docs/tools/dump_format_style.py
@@ -77,6 +77,20 @@ def __init__(self, name, comment):
   def __str__(self):
     return '\n'.join(map(str, self.values))
 
+class NestedEnum(object):
+  def __init__(self, name, enumtype, comment, values):
+    self.name = name
+    self.comment = comment
+    self.values = values
+    self.type = enumtype
+
+  def __str__(self):
+    s = '\n* ``%s %s``\n%s' % (self.type, self.name,
+                                 doxygen2rst(indent(self.comment, 2)))
+    s += indent('\nPossible values:\n\n', 2)
+    s += indent('\n'.join(map(str, self.values)),2)
+    return s;
+
 class EnumValue(object):
   def __init__(self, name, comment, config):
     self.name = name
@@ -156,7 +170,12 @@ class State(object):
         comment += clean_comment_line(line)
       else:
         state = State.InNestedStruct
-        nested_struct.values.append(NestedField(line.replace(';', ''), comment))
+        field_type, field_name = re.match(r'([<>:\w(,\s)]+)\s+(\w+);',line).groups()
+        if field_type in enums:
+            nested_struct.values.append(NestedEnum(field_name,field_type,comment,enums[field_type].values))
+        else:
+            nested_struct.values.append(NestedField(field_type + " " + field_name, comment))
+
     elif state == State.InEnum:
       if line.startswith('///'):
         state = State.InEnumMemberComment


        


More information about the cfe-commits mailing list