[PATCH] D77682: [clang-format] Always break line after enum opening brace
Omar Sandoval via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 7 15:16:55 PDT 2020
osandov created this revision.
osandov added reviewers: MyDeveloperDay, krasimir.
osandov added projects: clang-format, clang.
Herald added a subscriber: cfe-commits.
clang-format currently puts the first enumerator on the same line as the
enum keyword and opening brace if it fits (for example, for anonymous
enums if IndentWidth is 8):
$ echo "enum { A, };" | clang-format -style="{BasedOnStyle: llvm, IndentWidth: 8}"
enum { A,
};
This doesn't seem to be intentional, as I can't find any style guide that
suggests wrapping enums this way. Always force the enumerator to be on a new
line, which gets us the desired result:
$ echo "enum { A, };" | ./bin/clang-format -style="{BasedOnStyle: llvm, IndentWidth: 8}"
enum {
A,
};
Test Plan:
New test added. Confirmed test failed without change and passed with change by
running:
$ ninja FormatTests && ./tools/clang/unittests/Format/FormatTests
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D77682
Files:
clang/lib/Format/ContinuationIndenter.cpp
clang/unittests/Format/FormatTest.cpp
Index: clang/unittests/Format/FormatTest.cpp
===================================================================
--- clang/unittests/Format/FormatTest.cpp
+++ clang/unittests/Format/FormatTest.cpp
@@ -1929,6 +1929,14 @@
" TWO\n"
"};\n"
"int i;");
+
+ FormatStyle EightIndent = getLLVMStyle();
+ EightIndent.IndentWidth = 8;
+ verifyFormat("enum {\n"
+ " A,\n"
+ "};",
+ EightIndent);
+
// Not enums.
verifyFormat("enum X f() {\n"
" a();\n"
Index: clang/lib/Format/ContinuationIndenter.cpp
===================================================================
--- clang/lib/Format/ContinuationIndenter.cpp
+++ clang/lib/Format/ContinuationIndenter.cpp
@@ -423,7 +423,7 @@
State.Stack.back().BreakBeforeParameter && Current.CanBreakBefore)
return true;
- if (State.Column <= NewLineColumn)
+ if (!State.Line->First->is(tok::kw_enum) && State.Column <= NewLineColumn)
return false;
if (Style.AlwaysBreakBeforeMultilineStrings &&
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D77682.255826.patch
Type: text/x-patch
Size: 1074 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200407/cda837af/attachment-0001.bin>
More information about the cfe-commits
mailing list