[PATCH] D116188: [clang-format] Fix short enums getting wrapped even when denied
Gabriel Smith via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Dec 22 14:22:01 PST 2021
yodaldevoid created this revision.
yodaldevoid added reviewers: HazardyKnusperkeks, MyDeveloperDay, curdeius, owenpan.
yodaldevoid requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
Single-variant enums were still getting placed on a single line even
when AllowShortEnumsOnASingleLine was false. This fixes that by checking
that setting when looking to merge lines.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D116188
Files:
clang/lib/Format/UnwrappedLineFormatter.cpp
clang/unittests/Format/FormatTest.cpp
Index: clang/unittests/Format/FormatTest.cpp
===================================================================
--- clang/unittests/Format/FormatTest.cpp
+++ clang/unittests/Format/FormatTest.cpp
@@ -2511,6 +2511,10 @@
" C\n"
"} ShortEnum1, ShortEnum2;",
Style);
+ verifyFormat("enum {\n"
+ " A,\n"
+ "} ShortEnum1, ShortEnum2;",
+ Style);
Style.BreakBeforeBraces = FormatStyle::BS_Custom;
Style.BraceWrapping.AfterEnum = true;
verifyFormat("enum\n"
Index: clang/lib/Format/UnwrappedLineFormatter.cpp
===================================================================
--- clang/lib/Format/UnwrappedLineFormatter.cpp
+++ clang/lib/Format/UnwrappedLineFormatter.cpp
@@ -393,11 +393,16 @@
// Try to merge a block with left brace wrapped that wasn't yet covered
if (TheLine->Last->is(tok::l_brace)) {
+ const FormatToken *Tok = TheLine->First;
bool ShouldMerge = false;
- if (TheLine->First->isOneOf(tok::kw_class, tok::kw_struct)) {
+ if (Tok && Tok->is(tok::kw_typedef))
+ Tok = Tok->getNextNonComment();
+ if (Tok && Tok->isOneOf(tok::kw_class, tok::kw_struct)) {
ShouldMerge = !Style.BraceWrapping.AfterClass ||
(I[1]->First->is(tok::r_brace) &&
!Style.BraceWrapping.SplitEmptyRecord);
+ } else if (Tok && Tok->is(tok::kw_enum)) {
+ ShouldMerge = Style.AllowShortEnumsOnASingleLine;
} else {
ShouldMerge = !Style.BraceWrapping.AfterFunction ||
(I[1]->First->is(tok::r_brace) &&
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D116188.395930.patch
Type: text/x-patch
Size: 1635 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20211222/264a8add/attachment.bin>
More information about the cfe-commits
mailing list