diff options
| author | Owen Pan <owenpiano@gmail.com> | 2018-09-13 07:27:15 +0000 |
|---|---|---|
| committer | Owen Pan <owenpiano@gmail.com> | 2018-09-13 07:27:15 +0000 |
| commit | 58c3dee3b3cdf103680d80b61167dda9612d3e0d (patch) | |
| tree | b3d064a0cc38f144b707d928f975259699cbf4cb | |
| parent | 2fb44808b1e90a0c8300c93cd411850659e536e7 (diff) | |
| download | bcm5719-llvm-58c3dee3b3cdf103680d80b61167dda9612d3e0d.tar.gz bcm5719-llvm-58c3dee3b3cdf103680d80b61167dda9612d3e0d.zip | |
[clang-format] Wrapped block after case label should not be merged into one line
PR38854
Differential Revision: http://reviews.llvm.org/D51719
llvm-svn: 342116
| -rw-r--r-- | clang/lib/Format/UnwrappedLineFormatter.cpp | 4 | ||||
| -rw-r--r-- | clang/unittests/Format/FormatTest.cpp | 26 |
2 files changed, 30 insertions, 0 deletions
diff --git a/clang/lib/Format/UnwrappedLineFormatter.cpp b/clang/lib/Format/UnwrappedLineFormatter.cpp index f0d93a1f4f3..43d71504cac 100644 --- a/clang/lib/Format/UnwrappedLineFormatter.cpp +++ b/clang/lib/Format/UnwrappedLineFormatter.cpp @@ -323,6 +323,10 @@ private: kwId == clang::tok::objc_synchronized) return 0; } + // Don't merge block with left brace wrapped after case labels + if (TheLine->First->is(tok::l_brace) && I != AnnotatedLines.begin() && + I[-1]->First->isOneOf(tok::kw_case, tok::kw_default)) + return 0; // Try to merge a block with left brace wrapped that wasn't yet covered if (TheLine->Last->is(tok::l_brace)) { return !Style.BraceWrapping.AfterFunction || diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index e7c467547a1..70bc9e0ed73 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -1064,6 +1064,32 @@ TEST_F(FormatTest, FormatsSwitchStatement) { " return;\n" "}", getLLVMStyleWithColumns(34)); + + FormatStyle Style = getLLVMStyle(); + Style.IndentCaseLabels = true; + Style.AllowShortBlocksOnASingleLine = false; + Style.BreakBeforeBraces = FormatStyle::BS_Custom; + Style.BraceWrapping.AfterControlStatement = true; + EXPECT_EQ("switch (n)\n" + "{\n" + " case 0:\n" + " {\n" + " return false;\n" + " }\n" + " default:\n" + " {\n" + " return true;\n" + " }\n" + "}", + format("switch (n) {\n" + " case 0: {\n" + " return false;\n" + " }\n" + " default: {\n" + " return true;\n" + " }\n" + "}", + Style)); } TEST_F(FormatTest, CaseRanges) { |

