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

Reply via email to