From: Daniel Jasper Date: Fri, 25 Jan 2013 15:43:32 +0000 (+0000) Subject: Fix some alignment and line break decisions. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3499ddac3f075cbda6347067190fcc7a972dcaca;p=clang Fix some alignment and line break decisions. This combines two small changes: 1) Put a penalty on breaking after "<" 2) Only produce a hanging indent when parameters are separated by commas. Before: aaaaaaaaaaaaaaaaaaaaaaaa< aaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaa>(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa); aaaaaa(new Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa( aaaaaaaaaaaaaaaaaaaaaaaaaaaaa)); After: aaaaaaaaaaaaaaaaaaaaaaaa( aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa); aaaaaa(new Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa( aaaaaaaaaaaaaaaaaaaaaaaaaaaaa)); This changes one ObjC test, but AFAICT this is not according to any style guide (neither before nor after). We probably should be aligning on the ":" there according to: http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml?showone=Method_Invocations#Method_Invocations git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173457 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index 1cac334125..ed7f35486c 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -609,7 +609,7 @@ private: // Treat the condition inside an if as if it was a second function // parameter, i.e. let nested calls have an indent of 4. State.Stack.back().LastSpace = State.Column + 1; // 1 is length of "(". - else if (Spaces > 0 && ParenLevel != 0) + else if (Previous.is(tok::comma) && ParenLevel != 0) // Top-level spaces are exempt as that mostly leads to better results. State.Stack.back().LastSpace = State.Column; } @@ -706,7 +706,7 @@ private: if (Right.is(tok::colon) && Right.Type == TT_ObjCMethodExpr) return 20; - if (Left.is(tok::l_paren)) + if (Left.is(tok::l_paren) || Left.Type == TT_TemplateOpener) return 20; if (Left.is(tok::question) || Left.Type == TT_ConditionalExpr) diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 2250c03b58..7d274832a3 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -909,7 +909,7 @@ TEST_F(FormatTest, ConstructorInitializers) { // This test takes VERY long when memoization is broken. std::string input = "Constructor()\n" - " : aaaa(a,\n"; + " : aaaa(a,\n"; for (unsigned i = 0, e = 80; i != e; ++i) { input += " a,\n"; } @@ -952,6 +952,12 @@ TEST_F(FormatTest, BreaksDesireably) { verifyFormat( "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&\n" " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);"); + verifyFormat( + "aaaaaa(new Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n" + " aaaaaaaaaaaaaaaaaaaaaaaaaaaaa));"); + verifyFormat( + "aaaaaa(aaa, new Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n" + " aaaaaaaaaaaaaaaaaaaaaaaaaaaaa));"); // This test case breaks on an incorrect memoization, i.e. an optimization not // taking into account the StopAt value. @@ -1202,6 +1208,9 @@ TEST_F(FormatTest, WrapsTemplateDeclarations) { "template \n" "void f();"); + verifyFormat( + "aaaaaaaaaaaaaaaaaaaaaaaa(\n" + " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);"); } TEST_F(FormatTest, WrapsAtNestedNameSpecifiers) { @@ -2071,7 +2080,7 @@ TEST_F(FormatTest, FormatObjCMethodExpr) { verifyFormat( "void f() {\n" " if ((self = [super initWithContentRect:contentRect styleMask:styleMask\n" - " backing:NSBackingStoreBuffered defer:YES]))"); + " backing:NSBackingStoreBuffered defer:YES]))"); verifyFormat("[foo checkThatBreakingAfterColonWorksOk:\n" " [bar ifItDoes:reduceOverallLineLengthLikeInThisCase]];");