forked from OSchip/llvm-project
Fix Bug 38713: clang-format mishandles a short block after "default:" in a switch statement
Summary: See https://bugs.llvm.org/show_bug.cgi?id=38713 Patch by Owen Pan! Reviewers: djasper, klimek, sammccall Reviewed By: sammccall Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D51294 llvm-svn: 341284
This commit is contained in:
parent
b993cf50d6
commit
81b61a8291
|
@ -483,6 +483,12 @@ private:
|
|||
if (Line.First->isOneOf(tok::kw_else, tok::kw_case) ||
|
||||
(Line.First->Next && Line.First->Next->is(tok::kw_else)))
|
||||
return 0;
|
||||
// default: in switch statement
|
||||
if (Line.First->is(tok::kw_default)) {
|
||||
const FormatToken *Tok = Line.First->getNextNonComment();
|
||||
if (Tok && Tok->is(tok::colon))
|
||||
return 0;
|
||||
}
|
||||
if (Line.First->isOneOf(tok::kw_if, tok::kw_while, tok::kw_do, tok::kw_try,
|
||||
tok::kw___try, tok::kw_catch, tok::kw___finally,
|
||||
tok::kw_for, tok::r_brace, Keywords.kw___except)) {
|
||||
|
|
|
@ -999,6 +999,24 @@ TEST_F(FormatTest, FormatsSwitchStatement) {
|
|||
" }\n"
|
||||
"});",
|
||||
getLLVMStyle()));
|
||||
EXPECT_EQ("switch (n) {\n"
|
||||
"case 0: {\n"
|
||||
" return false;\n"
|
||||
"}\n"
|
||||
"default: {\n"
|
||||
" return true;\n"
|
||||
"}\n"
|
||||
"}",
|
||||
format("switch (n)\n"
|
||||
"{\n"
|
||||
"case 0: {\n"
|
||||
" return false;\n"
|
||||
"}\n"
|
||||
"default: {\n"
|
||||
" return true;\n"
|
||||
"}\n"
|
||||
"}",
|
||||
getLLVMStyle()));
|
||||
verifyFormat("switch (a) {\n"
|
||||
"case (b):\n"
|
||||
" return;\n"
|
||||
|
|
Loading…
Reference in New Issue