r368507 - [clang-format] Add SpaceInEmptyBlock option for WebKit
Owen Pan via cfe-commits
cfe-commits at lists.llvm.org
Sat Aug 10 00:51:21 PDT 2019
Author: owenpan
Date: Sat Aug 10 00:51:21 2019
New Revision: 368507
URL: http://llvm.org/viewvc/llvm-project?rev=368507&view=rev
Log:
[clang-format] Add SpaceInEmptyBlock option for WebKit
See PR40840
Differential Revision: https://reviews.llvm.org/D65925
Modified:
cfe/trunk/docs/ClangFormatStyleOptions.rst
cfe/trunk/include/clang/Format/Format.h
cfe/trunk/lib/Format/Format.cpp
cfe/trunk/lib/Format/UnwrappedLineFormatter.cpp
cfe/trunk/unittests/Format/FormatTest.cpp
Modified: cfe/trunk/docs/ClangFormatStyleOptions.rst
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ClangFormatStyleOptions.rst?rev=368507&r1=368506&r2=368507&view=diff
==============================================================================
--- cfe/trunk/docs/ClangFormatStyleOptions.rst (original)
+++ cfe/trunk/docs/ClangFormatStyleOptions.rst Sat Aug 10 00:51:21 2019
@@ -192,20 +192,6 @@ the configuration (without a prefix: ``A
-**AlignConsecutiveMacros** (``bool``)
- If ``true``, aligns consecutive C/C++ preprocessor macros.
-
- This will align the C/C++ preprocessor macros of consecutive lines. This
- will result in formattings like
-
- .. code-block:: c++
-
- #define SHORT_NAME 42
- #define LONGER_NAME 0x007f
- #define EVEN_LONGER_NAME (2)
- #define foo(x) (x * x)
- #define bar(y, z) (y + z)
-
**AlignConsecutiveAssignments** (``bool``)
If ``true``, aligns consecutive assignments.
@@ -230,6 +216,20 @@ the configuration (without a prefix: ``A
float b = 23;
std::string ccc = 23;
+**AlignConsecutiveMacros** (``bool``)
+ If ``true``, aligns consecutive C/C++ preprocessor macros.
+
+ This will align C/C++ preprocessor macros of consecutive lines.
+ Will result in formattings like
+
+ .. code-block:: c++
+
+ #define SHORT_NAME 42
+ #define LONGER_NAME 0x007f
+ #define EVEN_LONGER_NAME (2)
+ #define foo(x) (x * x)
+ #define bar(y, z) (y + z)
+
**AlignEscapedNewlines** (``EscapedNewlineAlignmentStyle``)
Options for aligning backslashes in escaped newlines.
@@ -1390,24 +1390,6 @@ the configuration (without a prefix: ``A
For example: BOOST_FOREACH.
-**TypenameMacros** (``std::vector<std::string>``)
- A vector of macros that should be interpreted as type declarations
- instead of as function calls.
-
- These are expected to be macros of the form:
-
- .. code-block: c++
-
- STACK_OF(...)
-
- In the .clang-format configuration file, this can be configured like:
-
- .. code-block: yaml
-
- TypenameMacros: ['STACK_OF', 'LIST']
-
- For example: OpenSSL STACK_OF, BSD LIST_ENTRY.
-
**IncludeBlocks** (``IncludeBlocksStyle``)
Dependent on the value, multiple ``#include`` blocks can be sorted
as one and divided based on category.
@@ -2134,6 +2116,15 @@ the configuration (without a prefix: ``A
true: false:
for (auto v : values) {} vs. for(auto v: values) {}
+**SpaceInEmptyBlock** (``bool``)
+ If ``true``, spaces will be inserted into ``{}``.
+
+ .. code-block:: c++
+
+ true: false:
+ void f() { } vs. void f() {}
+ while (true) { } while (true) {}
+
**SpaceInEmptyParentheses** (``bool``)
If ``true``, spaces may be inserted into ``()``.
@@ -2241,6 +2232,24 @@ the configuration (without a prefix: ``A
**TabWidth** (``unsigned``)
The number of columns used for tab stops.
+**TypenameMacros** (``std::vector<std::string>``)
+ A vector of macros that should be interpreted as type declarations
+ instead of as function calls.
+
+ These are expected to be macros of the form:
+
+ .. code-block:: c++
+
+ STACK_OF(...)
+
+ In the .clang-format configuration file, this can be configured like:
+
+ .. code-block:: yaml
+
+ TypenameMacros: ['STACK_OF', 'LIST']
+
+ For example: OpenSSL STACK_OF, BSD LIST_ENTRY.
+
**UseTab** (``UseTabStyle``)
The way to use tab characters in the resulting file.
Modified: cfe/trunk/include/clang/Format/Format.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Format/Format.h?rev=368507&r1=368506&r2=368507&view=diff
==============================================================================
--- cfe/trunk/include/clang/Format/Format.h (original)
+++ cfe/trunk/include/clang/Format/Format.h Sat Aug 10 00:51:21 2019
@@ -1799,6 +1799,14 @@ struct FormatStyle {
/// \endcode
bool SpaceBeforeRangeBasedForLoopColon;
+ /// If ``true``, spaces will be inserted into ``{}``.
+ /// \code
+ /// true: false:
+ /// void f() { } vs. void f() {}
+ /// while (true) { } while (true) {}
+ /// \endcode
+ bool SpaceInEmptyBlock;
+
/// If ``true``, spaces may be inserted into ``()``.
/// \code
/// true: false:
@@ -1995,6 +2003,7 @@ struct FormatStyle {
SpaceBeforeParens == R.SpaceBeforeParens &&
SpaceBeforeRangeBasedForLoopColon ==
R.SpaceBeforeRangeBasedForLoopColon &&
+ SpaceInEmptyBlock == R.SpaceInEmptyBlock &&
SpaceInEmptyParentheses == R.SpaceInEmptyParentheses &&
SpacesBeforeTrailingComments == R.SpacesBeforeTrailingComments &&
SpacesInAngles == R.SpacesInAngles &&
Modified: cfe/trunk/lib/Format/Format.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=368507&r1=368506&r2=368507&view=diff
==============================================================================
--- cfe/trunk/lib/Format/Format.cpp (original)
+++ cfe/trunk/lib/Format/Format.cpp Sat Aug 10 00:51:21 2019
@@ -494,6 +494,7 @@ template <> struct MappingTraits<FormatS
IO.mapOptional("SpaceBeforeParens", Style.SpaceBeforeParens);
IO.mapOptional("SpaceBeforeRangeBasedForLoopColon",
Style.SpaceBeforeRangeBasedForLoopColon);
+ IO.mapOptional("SpaceInEmptyBlock", Style.SpaceInEmptyBlock);
IO.mapOptional("SpaceInEmptyParentheses", Style.SpaceInEmptyParentheses);
IO.mapOptional("SpacesBeforeTrailingComments",
Style.SpacesBeforeTrailingComments);
@@ -734,6 +735,7 @@ FormatStyle getLLVMStyle(FormatStyle::La
LLVMStyle.ReflowComments = true;
LLVMStyle.SpacesInParentheses = false;
LLVMStyle.SpacesInSquareBrackets = false;
+ LLVMStyle.SpaceInEmptyBlock = false;
LLVMStyle.SpaceInEmptyParentheses = false;
LLVMStyle.SpacesInContainerLiterals = true;
LLVMStyle.SpacesInCStyleCastParentheses = false;
@@ -979,6 +981,7 @@ FormatStyle getWebKitStyle() {
Style.ObjCSpaceAfterProperty = true;
Style.PointerAlignment = FormatStyle::PAS_Left;
Style.SpaceBeforeCpp11BracedList = true;
+ Style.SpaceInEmptyBlock = true;
return Style;
}
Modified: cfe/trunk/lib/Format/UnwrappedLineFormatter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/UnwrappedLineFormatter.cpp?rev=368507&r1=368506&r2=368507&view=diff
==============================================================================
--- cfe/trunk/lib/Format/UnwrappedLineFormatter.cpp (original)
+++ cfe/trunk/lib/Format/UnwrappedLineFormatter.cpp Sat Aug 10 00:51:21 2019
@@ -551,7 +551,7 @@ private:
(Tok->getNextNonComment() == nullptr ||
Tok->getNextNonComment()->is(tok::semi))) {
// We merge empty blocks even if the line exceeds the column limit.
- Tok->SpacesRequiredBefore = 0;
+ Tok->SpacesRequiredBefore = Style.SpaceInEmptyBlock ? 1 : 0;
Tok->CanBreakBefore = true;
return 1;
} else if (Limit != 0 && !Line.startsWithNamespace() &&
Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=368507&r1=368506&r2=368507&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Sat Aug 10 00:51:21 2019
@@ -3692,6 +3692,11 @@ TEST_F(FormatTest, PutEmptyBlocksIntoOne
EXPECT_EQ("{}", format("{}"));
verifyFormat("enum E {};");
verifyFormat("enum E {}");
+ EXPECT_EQ("void f() { }", format("void f() {}", getWebKitStyle()));
+ FormatStyle Style = getLLVMStyle();
+ Style.AllowShortBlocksOnASingleLine = true;
+ Style.SpaceInEmptyBlock = true;
+ EXPECT_EQ("while (true) { }", format("while (true) {}", Style));
}
TEST_F(FormatTest, FormatBeginBlockEndMacros) {
@@ -11765,6 +11770,7 @@ TEST_F(FormatTest, ParsesConfigurationBo
CHECK_PARSE_BOOL(SpacesInParentheses);
CHECK_PARSE_BOOL(SpacesInSquareBrackets);
CHECK_PARSE_BOOL(SpacesInAngles);
+ CHECK_PARSE_BOOL(SpaceInEmptyBlock);
CHECK_PARSE_BOOL(SpaceInEmptyParentheses);
CHECK_PARSE_BOOL(SpacesInContainerLiterals);
CHECK_PARSE_BOOL(SpacesInCStyleCastParentheses);
More information about the cfe-commits
mailing list