[clang-format] Missing space after cast in a macro

https://github.com/llvm/llvm-project/issues/52979

Though SpaceAfterCStyleCast is set to true, clang-format 13 does not add a space after (void *) here:

```
```

This patch addresses that

Fixes: #52979

Reviewed By: curdeius, HazardyKnusperkeks, owenpan

Differential Revision: https://reviews.llvm.org/D116592
This commit is contained in:
mydeveloperday 2022-01-06 08:05:59 +00:00
parent 118e953b18
commit 49d311874e
2 changed files with 23 additions and 3 deletions

View File

@ -1883,9 +1883,10 @@ private:
FormatToken *LeftOfParens = Tok.MatchingParen->getPreviousNonComment();
if (LeftOfParens) {
// If there is a closing parenthesis left of the current parentheses,
// look past it as these might be chained casts.
if (LeftOfParens->is(tok::r_paren)) {
// If there is a closing parenthesis left of the current
// parentheses, look past it as these might be chained casts.
if (LeftOfParens->is(tok::r_paren) &&
LeftOfParens->isNot(TT_CastRParen)) {
if (!LeftOfParens->MatchingParen ||
!LeftOfParens->MatchingParen->Previous)
return false;

View File

@ -10150,6 +10150,15 @@ TEST_F(FormatTest, FormatsCasts) {
" (aaaaaaaaaaaaaaaaaaaaaaaaaa *)(aaaaaaaaaaaaaaaaaaaaaa +\n"
" bbbbbbbbbbbbbbbbbbbbbb);");
verifyFormat("#define CONF_BOOL(x) (bool *)(void *)(x)");
verifyFormat("#define CONF_BOOL(x) (bool *)(x)");
verifyFormat("#define CONF_BOOL(x) (bool)(x)");
verifyFormat("bool *y = (bool *)(void *)(x);");
verifyFormat("#define CONF_BOOL(x) (bool *)(void *)(int)(x)");
verifyFormat("bool *y = (bool *)(void *)(int)(x);");
verifyFormat("#define CONF_BOOL(x) (bool *)(void *)(int)foo(x)");
verifyFormat("bool *y = (bool *)(void *)(int)foo(x);");
// These are not casts.
verifyFormat("void f(int *) {}");
verifyFormat("f(foo)->b;");
@ -14661,6 +14670,11 @@ TEST_F(FormatTest, ConfigurableSpacesInParentheses) {
" break;\n"
"}",
Spaces);
verifyFormat("#define CONF_BOOL(x) ( bool * ) ( void * ) (x)", Spaces);
verifyFormat("#define CONF_BOOL(x) ( bool * ) (x)", Spaces);
verifyFormat("#define CONF_BOOL(x) ( bool ) (x)", Spaces);
verifyFormat("bool *y = ( bool * ) ( void * ) (x);", Spaces);
verifyFormat("bool *y = ( bool * ) (x);", Spaces);
// Run subset of tests again with:
Spaces.SpacesInCStyleCastParentheses = false;
@ -14680,6 +14694,11 @@ TEST_F(FormatTest, ConfigurableSpacesInParentheses) {
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);
verifyFormat("#define CONF_BOOL(x) (bool *) (void *) (x)", Spaces);
verifyFormat("#define CONF_BOOL(x) (bool *) (void *) (int) (x)", Spaces);
verifyFormat("bool *y = (bool *) (void *) (x);", Spaces);
verifyFormat("bool *y = (bool *) (void *) (int) (x);", Spaces);
verifyFormat("bool *y = (bool *) (void *) (int) foo(x);", Spaces);
Spaces.ColumnLimit = 80;
Spaces.IndentWidth = 4;
Spaces.AlignAfterOpenBracket = FormatStyle::BAS_AlwaysBreak;