Index: clang/docs/ClangFormatStyleOptions.rst
===================================================================
--- clang/docs/ClangFormatStyleOptions.rst
+++ clang/docs/ClangFormatStyleOptions.rst
@@ -1,3 +1,11 @@
+.. raw:: html
+
+
+
+.. role:: versionbadge
+
==========================
Clang-Format Style Options
==========================
@@ -3225,7 +3233,7 @@
-**QualifierAlignment** (``QualifierAlignmentStyle``)
+**QualifierAlignment** (``QualifierAlignmentStyle``) :versionbadge:`clang-format 14.0.0`
Different ways to arrange const/volatile qualifiers.
.. warning::
@@ -3276,7 +3284,7 @@
-**QualifierOrder** (``List of Strings``)
+**QualifierOrder** (``List of Strings``) :versionbadge:`clang-format 14.0.0`
The Order in which the qualifiers appear.
Order is a an array can contain any of the following
Index: clang/docs/tools/dump_format_style.py
===================================================================
--- clang/docs/tools/dump_format_style.py
+++ clang/docs/tools/dump_format_style.py
@@ -87,15 +87,20 @@
return indent + s
class Option(object):
- def __init__(self, name, type, comment):
+ def __init__(self, name, type, comment, version):
self.name = name
self.type = type
self.comment = comment.strip()
self.enum = None
self.nested_struct = None
+ self.version = version
def __str__(self):
- s = '**%s** (``%s``)\n%s' % (self.name, to_yaml_type(self.type),
+ if self.version:
+ s = '**%s** (``%s``) :versionbadge:`clang-format %s`\n%s' % (self.name, to_yaml_type(self.type), self.version,
+ doxygen2rst(indent(self.comment, 2)))
+ else:
+ s = '**%s** (``%s``)\n%s' % (self.name, to_yaml_type(self.type),
doxygen2rst(indent(self.comment, 2)))
if self.enum and self.enum.values:
s += indent('\n\nPossible values:\n\n%s\n' % self.enum, 2)
@@ -173,6 +178,14 @@
if endcode_match:
return ''
+ match = re.match(r'^/// \\version$', line)
+ if match:
+ return '\n.. badge:: \n\n'
+
+ endversion_match = re.match(r'^/// +\\endversion$', line)
+ if endversion_match:
+ return ''
+
match = re.match(r'^/// \\warning$', line)
if match:
return '\n.. warning:: \n\n'
@@ -220,9 +233,9 @@
nested_struct = NestedStruct(name, comment)
elif line.endswith(';'):
state = State.InStruct
- field_type, field_name = re.match(r'([<>:\w(,\s)]+)\s+(\w+);',
+ field_type, field_name, trailcomment, version = re.match(r'([<>:\w(,\s)]+)\s+(\w+)\s*(\/\*version=([0-9.]*)\*\/)*;',
line).groups()
- option = Option(str(field_name), str(field_type), comment)
+ option = Option(str(field_name), str(field_type), comment, version)
options.append(option)
else:
raise Exception('Invalid format, expected comment, field or enum')
Index: clang/include/clang/Format/Format.h
===================================================================
--- clang/include/clang/Format/Format.h
+++ clang/include/clang/Format/Format.h
@@ -1862,7 +1862,7 @@
/// \warning
/// ``QualifierAlignment`` COULD lead to incorrect code generation.
/// \endwarning
- QualifierAlignmentStyle QualifierAlignment;
+ QualifierAlignmentStyle QualifierAlignment /*version=14.0.0*/;
/// The Order in which the qualifiers appear.
/// Order is a an array can contain any of the following
@@ -1882,7 +1882,7 @@
/// \code{.yaml}
/// QualifierOrder: ['inline', 'static', 'type', 'const', 'volatile' ]
/// \endcode
- std::vector QualifierOrder;
+ std::vector QualifierOrder /*version=14.0.0*/;
/// Different ways to break inheritance list.
enum BreakInheritanceListStyle : unsigned char {