r187901 - Fixes a couple of bugs with the Allman brace breaking.
Manuel Klimek
klimek at google.com
Wed Aug 7 12:20:45 PDT 2013
Author: klimek
Date: Wed Aug 7 14:20:45 2013
New Revision: 187901
URL: http://llvm.org/viewvc/llvm-project?rev=187901&view=rev
Log:
Fixes a couple of bugs with the Allman brace breaking.
In particular, left braces after an enum declaration now occur on their
own line. Further, when short ifs/whiles are allowed these no longer
cause the left brace to be on the same line as the if/while when a
brace is included.
Patch by Thomas Gibson-Robinson.
Modified:
cfe/trunk/lib/Format/Format.cpp
cfe/trunk/lib/Format/UnwrappedLineParser.cpp
cfe/trunk/unittests/Format/FormatTest.cpp
Modified: cfe/trunk/lib/Format/Format.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=187901&r1=187900&r2=187901&view=diff
==============================================================================
--- cfe/trunk/lib/Format/Format.cpp (original)
+++ cfe/trunk/lib/Format/Format.cpp Wed Aug 7 14:20:45 2013
@@ -1710,6 +1710,9 @@ private:
unsigned Limit) {
if (Limit == 0)
return;
+ if (Style.BreakBeforeBraces == FormatStyle::BS_Allman &&
+ (I + 1)->First->is(tok::l_brace))
+ return;
if ((I + 1)->InPPDirective != I->InPPDirective ||
((I + 1)->InPPDirective && (I + 1)->First->HasUnescapedNewline))
return;
Modified: cfe/trunk/lib/Format/UnwrappedLineParser.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/UnwrappedLineParser.cpp?rev=187901&r1=187900&r2=187901&view=diff
==============================================================================
--- cfe/trunk/lib/Format/UnwrappedLineParser.cpp (original)
+++ cfe/trunk/lib/Format/UnwrappedLineParser.cpp Wed Aug 7 14:20:45 2013
@@ -930,6 +930,8 @@ void UnwrappedLineParser::parseEnum() {
nextToken();
}
if (FormatTok->Tok.is(tok::l_brace)) {
+ if (Style.BreakBeforeBraces == FormatStyle::BS_Allman)
+ addUnwrappedLine();
nextToken();
addUnwrappedLine();
++Line->Level;
Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=187901&r1=187900&r2=187901&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Wed Aug 7 14:20:45 2013
@@ -5530,6 +5530,37 @@ TEST_F(FormatTest, AllmanBraceBreaking)
" }\n"
"}\n",
BreakBeforeBrace);
+
+ verifyFormat("enum X\n"
+ "{\n"
+ " Y = 0,\n"
+ "}\n",
+ BreakBeforeBrace);
+
+ FormatStyle BreakBeforeBraceShortIfs = BreakBeforeBrace;
+ BreakBeforeBraceShortIfs.AllowShortIfStatementsOnASingleLine = true;
+ BreakBeforeBraceShortIfs.AllowShortLoopsOnASingleLine = true;
+ verifyFormat("void f(bool b)\n"
+ "{\n"
+ " if (b)\n"
+ " {\n"
+ " return;\n"
+ " }\n"
+ "}\n",
+ BreakBeforeBraceShortIfs);
+ verifyFormat("void f(bool b)\n"
+ "{\n"
+ " if (b) return;\n"
+ "}\n",
+ BreakBeforeBraceShortIfs);
+ verifyFormat("void f(bool b)\n"
+ "{\n"
+ " while (b)\n"
+ " {\n"
+ " return;\n"
+ " }\n"
+ "}\n",
+ BreakBeforeBraceShortIfs);
}
TEST_F(FormatTest, UnderstandsPragmas) {
More information about the cfe-commits
mailing list