From: Daniel Jasper Date: Tue, 5 Aug 2014 12:06:20 +0000 (+0000) Subject: clang-format: Break before 'else' in Stroustrup style. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7947557c1af14843c290367b095e41dce3e50494;p=clang clang-format: Break before 'else' in Stroustrup style. Seems to be the desired thing to do according to: http://www.stroustrup.com/Programming/PPP-style-rev3.pdf Patch by Jarkko Hietaniemi, thank you! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214857 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Format/Format.h b/include/clang/Format/Format.h index 45cccaacd5..b21efa132d 100644 --- a/include/clang/Format/Format.h +++ b/include/clang/Format/Format.h @@ -269,7 +269,7 @@ struct FormatStyle { /// Like \c Attach, but break before braces on function, namespace and /// class definitions. BS_Linux, - /// Like \c Attach, but break before function definitions. + /// Like \c Attach, but break before function definitions, and 'else'. BS_Stroustrup, /// Always break before braces. BS_Allman, diff --git a/lib/Format/UnwrappedLineParser.cpp b/lib/Format/UnwrappedLineParser.cpp index ed28497ab9..1751173d11 100644 --- a/lib/Format/UnwrappedLineParser.cpp +++ b/lib/Format/UnwrappedLineParser.cpp @@ -1080,6 +1080,8 @@ void UnwrappedLineParser::parseIfThenElse() { --Line->Level; } if (FormatTok->Tok.is(tok::kw_else)) { + if (Style.BreakBeforeBraces == FormatStyle::BS_Stroustrup) + addUnwrappedLine(); nextToken(); if (FormatTok->Tok.is(tok::l_brace)) { CompoundStatementIndenter Indenter(this, Style, Line->Level); diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 8089b3e36e..e0841caa4c 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -7677,6 +7677,17 @@ TEST_F(FormatTest, StroustrupBraceBreaking) { "}", BreakBeforeBrace); + verifyFormat("void foo()\n" + "{\n" + " if (a) {\n" + " a();\n" + " }\n" + " else {\n" + " b();\n" + " }\n" + "}\n", + BreakBeforeBrace); + verifyFormat("#ifdef _DEBUG\n" "int foo(int i = 0)\n" "#else\n"