[clang] [clang-format] Add SpacesInParensOption for attributes and filtering for repeated parens (PR #77522)
Björn Schäpers via cfe-commits
cfe-commits at lists.llvm.org
Fri Jan 12 11:43:46 PST 2024
================
@@ -17016,6 +17056,158 @@ TEST_F(FormatTest, ConfigurableSpacesInParens) {
verifyFormat("size_t idx = (a->foo)(a - 1);", Spaces);
verifyFormat("size_t idx = (*foo)(a - 1);", Spaces);
verifyFormat("size_t idx = (*(foo))(a - 1);", Spaces);
+
+ // Check NonConsecutive spaces
+ Spaces.IndentWidth = 2;
+ Spaces.SpacesInParens = FormatStyle::SIPO_Custom;
+ Spaces.SpacesInParensOptions = {};
+ Spaces.SpacesInParensOptions.InAttributeSpecifiers =
+ FormatStyle::SIPCS_Always;
+ verifyFormat("SomeType *__attribute__( ( attr ) ) *a = NULL;", Spaces);
+ verifyFormat("void __attribute__( ( naked ) ) foo(int bar)", Spaces);
+ verifyFormat("void f() __attribute__( ( asdf ) );", Spaces);
+ Spaces.SpacesInParensOptions.InAttributeSpecifiers =
+ FormatStyle::SIPCS_NonConsecutive;
+ verifyFormat("SomeType *__attribute__(( attr )) *a = NULL;", Spaces);
+ verifyFormat("void __attribute__(( naked )) foo(int bar)", Spaces);
+ verifyFormat("void f() __attribute__(( asdf ));", Spaces);
+ Spaces.SpacesInParensOptions.InAttributeSpecifiers = FormatStyle::SIPCS_Never;
+
+ Spaces.SpacesInParens = FormatStyle::SIPO_Custom;
+ Spaces.SpacesInParensOptions = {};
+ Spaces.SpacesInParensOptions.InCStyleCasts = FormatStyle::SIPCS_Always;
+ verifyFormat("x = ( int32 )y;", Spaces);
+ verifyFormat("y = (( int (*)(int) )foo)(x);", Spaces);
+ Spaces.SpacesInParensOptions.InCStyleCasts =
+ FormatStyle::SIPCS_NonConsecutive;
+ verifyFormat("x = ( int32 )y;", Spaces);
+ verifyFormat("y = ((int (*)(int))foo)(x);", Spaces);
+ Spaces.SpacesInParensOptions.InCStyleCasts = FormatStyle::SIPCS_Never;
+ verifyFormat("x = (int32)y;", Spaces);
+ verifyFormat("y = ((int (*)(int))foo)(x);", Spaces);
+
+ Spaces.SpacesInParens = FormatStyle::SIPO_Custom;
+ Spaces.SpacesInParensOptions = {};
+ Spaces.SpacesInParensOptions.InConditionalStatements =
+ FormatStyle::SIPCS_Always;
+ 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);
+ verifyFormat("if ( (x - y) && (a ^ b) )\n"
+ " f();\n",
+ Spaces);
+ verifyFormat("for ( int i = 0; i < 10; i = (i + 1) )\n"
+ " foo(i);",
+ Spaces);
+ verifyFormat("switch ( x / (y + z) ) {\n"
+ "default:\n"
+ " break;\n"
+ "}",
+ Spaces);
+ Spaces.SpacesInParensOptions.InConditionalStatements =
+ FormatStyle::SIPCS_NonConsecutive;
+ 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);
+ verifyFormat("if ((x - y) && (a ^ b))\n"
+ " f();\n",
+ Spaces);
+ verifyFormat("for (int i = 0; i < 10; i = (i + 1))\n"
+ " foo(i);",
+ Spaces);
+ verifyFormat("switch (x / (y + z)) {\n"
+ "default:\n"
+ " break;\n"
+ "}",
+ Spaces);
+ Spaces.SpacesInParensOptions.InConditionalStatements =
+ FormatStyle::SIPCS_Never;
+ 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);
+ verifyFormat("if ((x - y) && (a ^ b))\n"
+ " f();\n",
+ Spaces);
+ verifyFormat("for (int i = 0; i < 10; i = (i + 1))\n"
+ " foo(i);",
+ Spaces);
+ verifyFormat("switch (x / (y + z)) {\n"
+ "default:\n"
+ " break;\n"
+ "}",
+ Spaces);
+
+ Spaces.SpacesInParens = FormatStyle::SIPO_Custom;
+ Spaces.SpacesInParensOptions = {};
+ Spaces.SpacesInParensOptions.Other = FormatStyle::SIPCS_Always;
+ verifyFormat("decltype( x ) y = 42;", Spaces);
+ verifyFormat("decltype( ( x ) ) y = z;", Spaces);
+ verifyFormat("decltype( ( foo() ) ) a = foo();", Spaces);
+ verifyFormat("decltype( ( bar( 10 ) ) ) a = bar( 11 );", Spaces);
+ verifyFormat("x = foo( ( a * ( b - c ) ) );", Spaces);
+ Spaces.SpacesInParensOptions.Other = FormatStyle::SIPCS_NonConsecutive;
+ verifyFormat("decltype( x ) y = 42;", Spaces);
+ verifyFormat("decltype(( x )) y = z;", Spaces);
+ verifyFormat("decltype((foo())) a = foo();", Spaces);
+ verifyFormat("decltype((bar( 10 ))) a = bar( 11 );", Spaces);
+ verifyFormat("x = foo((a * ( b - c )));", Spaces);
+ Spaces.SpacesInParensOptions.Other = FormatStyle::SIPCS_Never;
----------------
HazardyKnusperkeks wrote:
```suggestion
verifyFormat("x = foo((a * ( b - c )));", Spaces);
Spaces.SpacesInParensOptions.Other = FormatStyle::SIPCS_Never;
```
https://github.com/llvm/llvm-project/pull/77522
More information about the cfe-commits
mailing list