r217022 - clang-format: Add an option 'SpaceAfterCStyleCast'.
Martin Liška
mliska at suse.cz
Thu Sep 4 08:07:32 PDT 2014
Hello!
Thank you for the patch, works as I expected.
Martin
On 09/03/2014 09:37 AM, Daniel Jasper wrote:
> Author: djasper
> Date: Wed Sep 3 02:37:29 2014
> New Revision: 217022
>
> URL: http://llvm.org/viewvc/llvm-project?rev=217022&view=rev
> Log:
> clang-format: Add an option 'SpaceAfterCStyleCast'.
>
> This permits to add a space after closing parenthesis of a C-style cast.
> Defaults to false to preserve old behavior.
>
> Fixes llvm.org/PR19982.
>
> Before:
> (int)i;
>
> After:
> (int) i;
>
> Patch by Marek Kurdej.
>
> Modified:
> cfe/trunk/docs/ClangFormatStyleOptions.rst
> cfe/trunk/include/clang/Format/Format.h
> cfe/trunk/lib/Format/Format.cpp
> cfe/trunk/lib/Format/TokenAnnotator.cpp
> cfe/trunk/unittests/Format/FormatTest.cpp
>
> Modified: cfe/trunk/docs/ClangFormatStyleOptions.rst
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ClangFormatStyleOptions.rst?rev=217022&r1=217021&r2=217022&view=diff
> ==============================================================================
> --- cfe/trunk/docs/ClangFormatStyleOptions.rst (original)
> +++ cfe/trunk/docs/ClangFormatStyleOptions.rst Wed Sep 3 02:37:29 2014
> @@ -411,6 +411,9 @@ the configuration (without a prefix: ``A
> **SpacesInCStyleCastParentheses** (``bool``)
> If ``true``, spaces may be inserted into C style casts.
>
> +**SpaceAfterCStyleCast** (``bool``)
> + If ``true``, a space may be inserted after C style casts.
> +
> **SpacesInContainerLiterals** (``bool``)
> If ``true``, spaces are inserted inside container literals (e.g.
> ObjC and Javascript array and dict literals).
>
> Modified: cfe/trunk/include/clang/Format/Format.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Format/Format.h?rev=217022&r1=217021&r2=217022&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Format/Format.h (original)
> +++ cfe/trunk/include/clang/Format/Format.h Wed Sep 3 02:37:29 2014
> @@ -324,6 +324,9 @@ struct FormatStyle {
> /// \brief If \c true, spaces may be inserted into C style casts.
> bool SpacesInCStyleCastParentheses;
>
> + /// \brief If \c true, a space may be inserted after C style casts.
> + bool SpaceAfterCStyleCast;
> +
> /// \brief Different ways to put a space before opening parentheses.
> enum SpaceBeforeParensOptions {
> /// Never put a space before opening parentheses.
> @@ -422,6 +425,7 @@ struct FormatStyle {
> SpaceInEmptyParentheses == R.SpaceInEmptyParentheses &&
> SpacesInContainerLiterals == R.SpacesInContainerLiterals &&
> SpacesInCStyleCastParentheses == R.SpacesInCStyleCastParentheses &&
> + SpaceAfterCStyleCast == R.SpaceAfterCStyleCast &&
> SpaceBeforeParens == R.SpaceBeforeParens &&
> SpaceBeforeAssignmentOperators == R.SpaceBeforeAssignmentOperators &&
> ContinuationIndentWidth == R.ContinuationIndentWidth &&
>
> Modified: cfe/trunk/lib/Format/Format.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=217022&r1=217021&r2=217022&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Format/Format.cpp (original)
> +++ cfe/trunk/lib/Format/Format.cpp Wed Sep 3 02:37:29 2014
> @@ -228,6 +228,7 @@ template <> struct MappingTraits<FormatS
> IO.mapOptional("SpaceInEmptyParentheses", Style.SpaceInEmptyParentheses);
> IO.mapOptional("SpacesInCStyleCastParentheses",
> Style.SpacesInCStyleCastParentheses);
> + IO.mapOptional("SpaceAfterCStyleCast", Style.SpaceAfterCStyleCast);
> IO.mapOptional("SpacesInContainerLiterals",
> Style.SpacesInContainerLiterals);
> IO.mapOptional("SpaceBeforeAssignmentOperators",
> @@ -351,6 +352,7 @@ FormatStyle getLLVMStyle() {
> LLVMStyle.SpaceInEmptyParentheses = false;
> LLVMStyle.SpacesInContainerLiterals = true;
> LLVMStyle.SpacesInCStyleCastParentheses = false;
> + LLVMStyle.SpaceAfterCStyleCast = false;
> LLVMStyle.SpaceBeforeParens = FormatStyle::SBPO_ControlStatements;
> LLVMStyle.SpaceBeforeAssignmentOperators = true;
> LLVMStyle.SpacesInAngles = false;
>
> Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/TokenAnnotator.cpp?rev=217022&r1=217021&r2=217022&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Format/TokenAnnotator.cpp (original)
> +++ cfe/trunk/lib/Format/TokenAnnotator.cpp Wed Sep 3 02:37:29 2014
> @@ -1641,9 +1641,10 @@ bool TokenAnnotator::spaceRequiredBefore
> Tok.getNextNonComment() && Tok.Type != TT_ObjCMethodExpr &&
> !Tok.Previous->is(tok::question) &&
> (Tok.Type != TT_DictLiteral || Style.SpacesInContainerLiterals);
> - if (Tok.Previous->Type == TT_UnaryOperator ||
> - Tok.Previous->Type == TT_CastRParen)
> + if (Tok.Previous->Type == TT_UnaryOperator)
> return Tok.Type == TT_BinaryOperator;
> + if (Tok.Previous->Type == TT_CastRParen)
> + return Style.SpaceAfterCStyleCast || Tok.Type == TT_BinaryOperator;
> if (Tok.Previous->is(tok::greater) && Tok.is(tok::greater)) {
> return Tok.Type == TT_TemplateCloser &&
> Tok.Previous->Type == TT_TemplateCloser &&
>
> Modified: cfe/trunk/unittests/Format/FormatTest.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=217022&r1=217021&r2=217022&view=diff
> ==============================================================================
> --- cfe/trunk/unittests/Format/FormatTest.cpp (original)
> +++ cfe/trunk/unittests/Format/FormatTest.cpp Wed Sep 3 02:37:29 2014
> @@ -7721,6 +7721,38 @@ TEST_F(FormatTest, ConfigurableSpacesInP
> "default:\n"
> " break;\n"
> "}", Spaces);
> +
> + Spaces.SpaceAfterCStyleCast = true;
> + verifyFormat("call(x, y, z);", Spaces);
> + verifyFormat("while (( bool ) 1)\n"
> + " continue;",
> + Spaces);
> + verifyFormat("for (;;)\n"
> + " continue;",
> + Spaces);
> + verifyFormat("if (true)\n"
> + " f( );\n"
> + "else if (true)\n"
> + " f( );",
> + Spaces);
> + verifyFormat("do {\n"
> + " do_something(( int ) i);\n"
> + "} while (something( ));",
> + Spaces);
> + verifyFormat("switch (x) {\n"
> + "default:\n"
> + " break;\n"
> + "}",
> + Spaces);
> + Spaces.SpacesInCStyleCastParentheses = false;
> + Spaces.SpaceAfterCStyleCast = true;
> + verifyFormat("while ((bool) 1)\n"
> + " continue;",
> + Spaces);
> + verifyFormat("do {\n"
> + " do_something((int) i);\n"
> + "} while (something( ));",
> + Spaces);
> }
>
> TEST_F(FormatTest, ConfigurableSpacesInSquareBrackets) {
> @@ -8306,6 +8338,7 @@ TEST_F(FormatTest, ParsesConfigurationBo
> CHECK_PARSE_BOOL(SpaceInEmptyParentheses);
> CHECK_PARSE_BOOL(SpacesInContainerLiterals);
> CHECK_PARSE_BOOL(SpacesInCStyleCastParentheses);
> + CHECK_PARSE_BOOL(SpaceAfterCStyleCast);
> CHECK_PARSE_BOOL(SpaceBeforeAssignmentOperators);
> }
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list