forked from OSchip/llvm-project
[clang-format] Fix short enums getting wrapped even when denied
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. Differential Revision: https://reviews.llvm.org/D116188
This commit is contained in:
parent
27a0718ad0
commit
8ea64d5585
|
@ -393,11 +393,18 @@ private:
|
|||
|
||||
// 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->is(tok::kw_typedef)) {
|
||||
Tok = Tok->getNextNonComment();
|
||||
assert(Tok);
|
||||
}
|
||||
if (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->is(tok::kw_enum)) {
|
||||
ShouldMerge = Style.AllowShortEnumsOnASingleLine;
|
||||
} else {
|
||||
ShouldMerge = !Style.BraceWrapping.AfterFunction ||
|
||||
(I[1]->First->is(tok::r_brace) &&
|
||||
|
|
|
@ -2504,6 +2504,7 @@ TEST_F(FormatTest, ShortEnums) {
|
|||
FormatStyle Style = getLLVMStyle();
|
||||
Style.AllowShortEnumsOnASingleLine = true;
|
||||
verifyFormat("enum { A, B, C } ShortEnum1, ShortEnum2;", Style);
|
||||
verifyFormat("typedef enum { A, B, C } ShortEnum1, ShortEnum2;", Style);
|
||||
Style.AllowShortEnumsOnASingleLine = false;
|
||||
verifyFormat("enum {\n"
|
||||
" A,\n"
|
||||
|
@ -2511,6 +2512,20 @@ TEST_F(FormatTest, ShortEnums) {
|
|||
" C\n"
|
||||
"} ShortEnum1, ShortEnum2;",
|
||||
Style);
|
||||
verifyFormat("typedef enum {\n"
|
||||
" A,\n"
|
||||
" B,\n"
|
||||
" C\n"
|
||||
"} ShortEnum1, ShortEnum2;",
|
||||
Style);
|
||||
verifyFormat("enum {\n"
|
||||
" A,\n"
|
||||
"} ShortEnum1, ShortEnum2;",
|
||||
Style);
|
||||
verifyFormat("typedef enum {\n"
|
||||
" A,\n"
|
||||
"} ShortEnum1, ShortEnum2;",
|
||||
Style);
|
||||
Style.BreakBeforeBraces = FormatStyle::BS_Custom;
|
||||
Style.BraceWrapping.AfterEnum = true;
|
||||
verifyFormat("enum\n"
|
||||
|
|
Loading…
Reference in New Issue