diff options
author | Daniel Jasper <djasper@google.com> | 2013-01-28 15:40:20 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2013-01-28 15:40:20 +0000 |
commit | d75ff6496bfb599a9edde41681873919d4d44152 (patch) | |
tree | b04a8d7e2691bc7ebf85803d5123a65b8489c787 | |
parent | b7551f71a4c5a901bbae72b0a80af3745b7a0c0d (diff) |
Don't put a function's return type on its own line in Google style.
This would be against the style guide:
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Function_Declarations_and_Definitions#Function_Declarations_and_Definitions
Not sure what to do as a last resort if the function signature does not
fit onto a single line in Google style ..
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173690 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Format/Format.h | 3 | ||||
-rw-r--r-- | lib/Format/Format.cpp | 4 | ||||
-rw-r--r-- | unittests/Format/FormatTest.cpp | 3 |
3 files changed, 9 insertions, 1 deletions
diff --git a/include/clang/Format/Format.h b/include/clang/Format/Format.h index 78523ea36e..b21bfd2524 100644 --- a/include/clang/Format/Format.h +++ b/include/clang/Format/Format.h @@ -65,6 +65,9 @@ struct FormatStyle { /// the next line without calling this bin-packing. bool AllowAllParametersOnNextLine; + /// \brief Allow putting the return type of a function onto its own line. + bool AllowReturnTypeOnItsOwnLine; + /// \brief If the constructor initializers don't fit on a line, put each /// initializer on its own line. bool ConstructorInitializerAllOnOneLineOrOnePerLine; diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index 3b5dfc1abd..2199781735 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -176,6 +176,7 @@ FormatStyle getLLVMStyle() { LLVMStyle.SpacesBeforeTrailingComments = 1; LLVMStyle.BinPackParameters = true; LLVMStyle.AllowAllParametersOnNextLine = true; + LLVMStyle.AllowReturnTypeOnItsOwnLine = true; LLVMStyle.ConstructorInitializerAllOnOneLineOrOnePerLine = false; LLVMStyle.AllowShortIfStatementsOnASingleLine = false; LLVMStyle.ObjCSpaceBeforeProtocolList = true; @@ -193,6 +194,7 @@ FormatStyle getGoogleStyle() { GoogleStyle.SpacesBeforeTrailingComments = 2; GoogleStyle.BinPackParameters = false; GoogleStyle.AllowAllParametersOnNextLine = true; + GoogleStyle.AllowReturnTypeOnItsOwnLine = false; GoogleStyle.ConstructorInitializerAllOnOneLineOrOnePerLine = true; GoogleStyle.AllowShortIfStatementsOnASingleLine = false; GoogleStyle.ObjCSpaceBeforeProtocolList = false; @@ -1628,7 +1630,7 @@ private: // Don't break at ':' if identifier before it can beak. return false; } - if (Right.Type == TT_StartOfName) + if (Right.Type == TT_StartOfName && Style.AllowReturnTypeOnItsOwnLine) return true; if (Right.is(tok::colon) && Right.Type == TT_ObjCMethodExpr) return false; diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 6b9b84de26..bdc5f9a5c5 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -1511,6 +1511,9 @@ TEST_F(FormatTest, BreaksFunctionDeclarations) { "TypeSpecDecl *\n" "TypeSpecDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation L,\n" " IdentifierIn *II, Type *T) {\n}"); + verifyGoogleFormat( + "TypeSpecDecl* TypeSpecDecl::Create(\n" + " ASTContext& C, DeclContext* DC, SourceLocation L) {\n}"); } TEST_F(FormatTest, LineStartsWithSpecialCharacter) { |