Added SpaceAfterFunctionName option

Daniel Jasper djasper at google.com
Wed Dec 4 00:47:22 PST 2013


Please try again to use Phabricator (it seems to be up again and context
helps).

Two things I am wondering initially:
1. Do we really need all four combinations of the two boolean flags (for
function calls and for control statements)? The answer might be yes, but
I'd just like to make sure.
2. How does this affect constructor initializers (": a(1)") and variable
declarations ("int a(1);")?


On Tue, Dec 3, 2013 at 6:56 PM, Alexander Kornienko <alexfh at google.com>wrote:

> Added SpaceAfterFunctionName, which is needed for GNU coding style.
>
> Phab is taking a day off, so the patch is just here:
>
> Index: include/clang/Format/Format.h
> ===================================================================
> --- include/clang/Format/Format.h (revision 196295)
> +++ include/clang/Format/Format.h (working copy)
> @@ -260,6 +260,9 @@
>    /// and '('.
>    bool SpaceAfterControlStatementKeyword;
>
> +  /// \brief If \c true, spaces will be inserted between function name
> and '('.
> +  bool SpaceAfterFunctionName;
> +
>    /// \brief If \c false, spaces will be removed before assignment
> operators.
>    bool SpaceBeforeAssignmentOperators;
>
> @@ -317,6 +320,7 @@
>             SpacesInCStyleCastParentheses ==
> R.SpacesInCStyleCastParentheses &&
>             SpaceAfterControlStatementKeyword ==
>                 R.SpaceAfterControlStatementKeyword &&
> +           SpaceAfterFunctionName == R.SpaceAfterFunctionName &&
>             SpaceBeforeAssignmentOperators ==
> R.SpaceBeforeAssignmentOperators &&
>             ContinuationIndentWidth == R.ContinuationIndentWidth;
>    }
> Index: lib/Format/Format.cpp
> ===================================================================
> --- lib/Format/Format.cpp (revision 196295)
> +++ lib/Format/Format.cpp (working copy)
> @@ -181,6 +181,7 @@
>                     Style.SpacesInCStyleCastParentheses);
>      IO.mapOptional("SpaceAfterControlStatementKeyword",
>                     Style.SpaceAfterControlStatementKeyword);
> +    IO.mapOptional("SpaceAfterFunctionName",
> Style.SpaceAfterFunctionName);
>      IO.mapOptional("SpaceBeforeAssignmentOperators",
>                     Style.SpaceBeforeAssignmentOperators);
>      IO.mapOptional("ContinuationIndentWidth",
> Style.ContinuationIndentWidth);
> @@ -267,6 +268,7 @@
>    LLVMStyle.SpaceInEmptyParentheses = false;
>    LLVMStyle.SpacesInCStyleCastParentheses = false;
>    LLVMStyle.SpaceAfterControlStatementKeyword = true;
> +  LLVMStyle.SpaceAfterFunctionName = false;
>    LLVMStyle.SpaceBeforeAssignmentOperators = true;
>    LLVMStyle.ContinuationIndentWidth = 4;
>    LLVMStyle.SpacesInAngles = false;
> @@ -316,6 +318,7 @@
>    GoogleStyle.SpaceInEmptyParentheses = false;
>    GoogleStyle.SpacesInCStyleCastParentheses = false;
>    GoogleStyle.SpaceAfterControlStatementKeyword = true;
> +  GoogleStyle.SpaceAfterFunctionName = false;
>    GoogleStyle.SpaceBeforeAssignmentOperators = true;
>    GoogleStyle.ContinuationIndentWidth = 4;
>    GoogleStyle.SpacesInAngles = false;
> Index: lib/Format/TokenAnnotator.cpp
> ===================================================================
> --- lib/Format/TokenAnnotator.cpp (revision 196295)
> +++ lib/Format/TokenAnnotator.cpp (working copy)
> @@ -1295,7 +1295,8 @@
>                          tok::semi) ||
>             (Style.SpaceAfterControlStatementKeyword &&
>              Left.isOneOf(tok::kw_if, tok::kw_for, tok::kw_while,
> tok::kw_switch,
> -                         tok::kw_catch));
> +                         tok::kw_catch)) ||
> +           (Style.SpaceAfterFunctionName && Left.is(tok::identifier));
>    }
>    if (Left.is(tok::at) && Right.Tok.getObjCKeywordID() !=
> tok::objc_not_keyword)
>      return false;
> Index: unittests/Format/FormatTest.cpp
> ===================================================================
> --- unittests/Format/FormatTest.cpp (revision 196295)
> +++ unittests/Format/FormatTest.cpp (working copy)
> @@ -6637,6 +6637,33 @@
>                 "}", NoSpace);
>  }
>
> +TEST_F(FormatTest, ConfigurableSpaceAfterFunctionName) {
> +  FormatStyle Space = getLLVMStyle();
> +  Space.SpaceAfterControlStatementKeyword = false;
> +  Space.SpaceAfterFunctionName = true;
> +
> +  verifyFormat("int f ();", Space);
> +  verifyFormat("void f (int a, T b) {\n"
> +               "  while(true)\n"
> +               "    continue;\n"
> +               "}",
> +               Space);
> +  verifyFormat("if(true)\n"
> +               "  f ();\n"
> +               "else if(true)\n"
> +               "  f ();",
> +               Space);
> +  verifyFormat("do {\n"
> +               "  do_something ();\n"
> +               "} while(something ());",
> +               Space);
> +  verifyFormat("switch(x) {\n"
> +               "default:\n"
> +               "  break;\n"
> +               "}",
> +               Space);
> +}
> +
>  TEST_F(FormatTest, ConfigurableSpacesInParentheses) {
>    FormatStyle Spaces = getLLVMStyle();
>
> @@ -6945,6 +6972,7 @@
>    CHECK_PARSE_BOOL(SpaceInEmptyParentheses);
>    CHECK_PARSE_BOOL(SpacesInCStyleCastParentheses);
>    CHECK_PARSE_BOOL(SpaceAfterControlStatementKeyword);
> +  CHECK_PARSE_BOOL(SpaceAfterFunctionName);
>    CHECK_PARSE_BOOL(SpaceBeforeAssignmentOperators);
>
>    CHECK_PARSE("AccessModifierOffset: -1234", AccessModifierOffset, -1234);
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20131204/6ffde4ed/attachment.html>


More information about the cfe-commits mailing list