r197980 - clang-format: (WebKit) Disallow 1-line constructors with initializers.
Daniel Jasper
djasper at google.com
Tue Dec 24 05:31:25 PST 2013
Author: djasper
Date: Tue Dec 24 07:31:25 2013
New Revision: 197980
URL: http://llvm.org/viewvc/llvm-project?rev=197980&view=rev
Log:
clang-format: (WebKit) Disallow 1-line constructors with initializers.
Before:
Constructor() : a(a) {}
After:
Constructor()
: a(a)
{
}
This style guide is pretty precise about this.
Modified:
cfe/trunk/lib/Format/Format.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=197980&r1=197979&r2=197980&view=diff
==============================================================================
--- cfe/trunk/lib/Format/Format.cpp (original)
+++ cfe/trunk/lib/Format/Format.cpp Tue Dec 24 07:31:25 2013
@@ -480,7 +480,7 @@ public:
SmallVectorImpl<AnnotatedLine *>::const_iterator I,
SmallVectorImpl<AnnotatedLine *>::const_iterator E) {
// We can never merge stuff if there are trailing line comments.
- AnnotatedLine *TheLine = *I;
+ const AnnotatedLine *TheLine = *I;
if (TheLine->Last->Type == TT_LineComment)
return 0;
@@ -498,7 +498,8 @@ public:
if (I + 1 == E || I[1]->Type == LT_Invalid)
return 0;
- if (TheLine->Last->Type == TT_FunctionLBrace) {
+ if (TheLine->Last->Type == TT_FunctionLBrace &&
+ TheLine->First != TheLine->Last) {
return Style.AllowShortFunctionsOnASingleLine
? tryMergeSimpleBlock(I, E, Limit)
: 0;
@@ -510,9 +511,11 @@ public:
}
if (I[1]->First->Type == TT_FunctionLBrace &&
Style.BreakBeforeBraces != FormatStyle::BS_Attach) {
- // Reduce the column limit by the number of spaces we need to insert
- // around braces.
- Limit = Limit > 3 ? Limit - 3 : 0;
+ // Check for Limit <= 2 to accomodate for the " {".
+ if (Limit <= 2 || (Style.ColumnLimit == 0 && containsMustBreak(TheLine)))
+ return 0;
+ Limit -= 2;
+
unsigned MergedLines = 0;
if (Style.AllowShortFunctionsOnASingleLine) {
MergedLines = tryMergeSimpleBlock(I + 1, E, Limit);
@@ -641,6 +644,14 @@ private:
return 1 + I[1]->Last->TotalLength + 1 + I[2]->Last->TotalLength <= Limit;
}
+ bool containsMustBreak(const AnnotatedLine *Line) {
+ for (const FormatToken *Tok = Line->First; Tok; Tok = Tok->Next) {
+ if (Tok->MustBreakBefore)
+ return true;
+ }
+ return false;
+ }
+
const FormatStyle &Style;
};
Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=197980&r1=197979&r2=197980&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Tue Dec 24 07:31:25 2013
@@ -6997,6 +6997,16 @@ TEST_F(FormatTest, AllmanBraceBreaking)
"}\n",
BreakBeforeBrace);
+ BreakBeforeBrace.ColumnLimit = 19;
+ verifyFormat("void f() { int i; }", BreakBeforeBrace);
+ BreakBeforeBrace.ColumnLimit = 18;
+ verifyFormat("void f()\n"
+ "{\n"
+ " int i;\n"
+ "}",
+ BreakBeforeBrace);
+ BreakBeforeBrace.ColumnLimit = 80;
+
FormatStyle BreakBeforeBraceShortIfs = BreakBeforeBrace;
BreakBeforeBraceShortIfs.AllowShortIfStatementsOnASingleLine = true;
BreakBeforeBraceShortIfs.AllowShortLoopsOnASingleLine = true;
@@ -7716,16 +7726,26 @@ TEST_F(FormatTest, FormatsWithWebKitStyl
" : aaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
" , aaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaa, // break\n"
" aaaaaaaaaaaaaa)\n"
- " , aaaaaaaaaaaaaaaaaaaaaaa() {}",
+ " , aaaaaaaaaaaaaaaaaaaaaaa()\n"
+ "{\n"
+ "}",
Style);
verifyFormat("SomeClass::Constructor()\n"
- " : a(a) {}",
+ " : a(a)\n"
+ "{\n"
+ "}",
Style);
+ EXPECT_EQ("SomeClass::Constructor()\n"
+ " : a(a)\n"
+ "{\n"
+ "}",
+ format("SomeClass::Constructor():a(a){}", Style));
verifyFormat("SomeClass::Constructor()\n"
" : a(a)\n"
" , b(b)\n"
- " , c(c) {}",
- Style);
+ " , c(c)\n"
+ "{\n"
+ "}", Style);
verifyFormat("SomeClass::Constructor()\n"
" : a(a)\n"
"{\n"
More information about the cfe-commits
mailing list