Issue |
130359
|
Summary |
Clang-format-20.1 incorrectly formats variadic pack expansions with assignments
|
Labels |
clang-format
|
Assignees |
|
Reporter |
lamarrr
|
Clang-format on the recent 20.1 release now incorrectly formats variadic pack expansions that have assignments in them.
A test-case is a hash-combine function:
```cpp
constexpr unsigned long long hash_combine(unsigned long long hash_a, unsigned long long hash_b)
{
hash_a ^= hash_b + 0x9e37'79b9 + (hash_a << 6) + (hash_a >> 2);
return hash_a;
}
template <typename... H>
constexpr unsigned long long hash_combine_n(unsigned long long hash_a, H... hash_b)
{
((hash_a = hash_combine(hash_a, hash_b)), ...);
return hash_a;
}
```
It formats `hash_combine_n` to:
```cpp
constexpr unsigned long long hash_combine(unsigned long long hash_a,
unsigned long long hash_b)
{
hash_a ^= hash_b + 0x9e37'79b9 + (hash_a << 6) + (hash_a >> 2);
return hash_a;
}
template <typename... H>
constexpr unsigned long long hash_combine_n(unsigned long long hash_a,
H... hash_b)
{
(hash_a = hash_combine(hash_a, hash_b), ...);
return hash_a;
}
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs