Allow all parameters on next line for function calls in Chrome.
authorDaniel Jasper <djasper@google.com>
Tue, 29 Jan 2013 16:03:49 +0000 (16:03 +0000)
committerDaniel Jasper <djasper@google.com>
Tue, 29 Jan 2013 16:03:49 +0000 (16:03 +0000)
The style guide only forbids this for function declarations. So,
now

someFunction(
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);

Is allowed in Chromium mode.

llvm-svn: 173806

clang/include/clang/Format/Format.h
clang/lib/Format/Format.cpp
clang/unittests/Format/FormatTest.cpp

index b21bfd2..d34a043 100644 (file)
@@ -61,9 +61,9 @@ struct FormatStyle {
   /// will either all be on the same line or will have one line each.
   bool BinPackParameters;
 
-  /// \brief Allow putting all parameters of a function declaration/call onto
-  /// the next line without calling this bin-packing.
-  bool AllowAllParametersOnNextLine;
+  /// \brief Allow putting all parameters of a function declaration onto
+  /// the next line even if \c BinPackParameters is \c false.
+  bool AllowAllParametersOfDeclarationOnNextLine;
 
   /// \brief Allow putting the return type of a function onto its own line.
   bool AllowReturnTypeOnItsOwnLine;
index 2522d4d..81c8309 100644 (file)
@@ -178,7 +178,7 @@ FormatStyle getLLVMStyle() {
   LLVMStyle.IndentCaseLabels = false;
   LLVMStyle.SpacesBeforeTrailingComments = 1;
   LLVMStyle.BinPackParameters = true;
-  LLVMStyle.AllowAllParametersOnNextLine = true;
+  LLVMStyle.AllowAllParametersOfDeclarationOnNextLine = true;
   LLVMStyle.AllowReturnTypeOnItsOwnLine = true;
   LLVMStyle.ConstructorInitializerAllOnOneLineOrOnePerLine = false;
   LLVMStyle.AllowShortIfStatementsOnASingleLine = false;
@@ -196,7 +196,7 @@ FormatStyle getGoogleStyle() {
   GoogleStyle.IndentCaseLabels = true;
   GoogleStyle.SpacesBeforeTrailingComments = 2;
   GoogleStyle.BinPackParameters = false;
-  GoogleStyle.AllowAllParametersOnNextLine = true;
+  GoogleStyle.AllowAllParametersOfDeclarationOnNextLine = true;
   GoogleStyle.AllowReturnTypeOnItsOwnLine = false;
   GoogleStyle.ConstructorInitializerAllOnOneLineOrOnePerLine = true;
   GoogleStyle.AllowShortIfStatementsOnASingleLine = false;
@@ -206,7 +206,7 @@ FormatStyle getGoogleStyle() {
 
 FormatStyle getChromiumStyle() {
   FormatStyle ChromiumStyle = getGoogleStyle();
-  ChromiumStyle.AllowAllParametersOnNextLine = false;
+  ChromiumStyle.AllowAllParametersOfDeclarationOnNextLine = false;
   ChromiumStyle.SplitTemplateClosingGreater = true;
   return ChromiumStyle;
 }
@@ -652,10 +652,11 @@ private:
 
     if (!Style.BinPackParameters && Newline) {
       // If we are breaking after '(', '{', '<', this is not bin packing unless
-      // AllowAllParametersOnNextLine is false.
+      // AllowAllParametersOfDeclarationOnNextLine is false.
       if ((Previous.isNot(tok::l_paren) && Previous.isNot(tok::l_brace) &&
            Previous.Type != TT_TemplateOpener) ||
-          !Style.AllowAllParametersOnNextLine)
+          (!Style.AllowAllParametersOfDeclarationOnNextLine &&
+           Line.MustBeDeclaration))
         State.Stack.back().BreakAfterComma = true;
 
       // Any break on this level means that the parent level has been broken
index f8402c0..219d73c 100644 (file)
@@ -1051,10 +1051,15 @@ TEST_F(FormatTest, FormatsOneParameterPerLineIfNecessary) {
                      "  a);");
 
   FormatStyle Style = getGoogleStyle();
-  Style.AllowAllParametersOnNextLine = false;
-  verifyFormat("aaaaaaaaaaaaaaa(aaaaaaaaa,\n"
+  Style.AllowAllParametersOfDeclarationOnNextLine = false;
+  verifyFormat("void aaaaaaaaaa(aaaaaaaaa,\n"
                "                aaaaaaaaa,\n"
-               "                aaaaaaaaaaaaaaaaaaaaa).aaaaaaaaaaaaaaaaaa();",
+               "                aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);",
+               Style);
+  verifyFormat("void f() {\n"
+               "  aaaaaaaaaaaaaaaaaaaaaaaa(\n"
+               "      aaaaaaaaa, aaaaaaaaa, aaaaaaaaaaaaaaaaaaaaa).aaaaaaa();\n"
+               "}",
                Style);
 }