<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/57304>57304</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            clang-format generates bad formatting with double braces
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-format
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          zmodem
      </td>
    </tr>
</table>

<pre>
    Consider:

```
$ cat | clang-format -style=chromium
  static constexpr std::array<PrefetchItemState, 11>
      kOrderedPrefetchItemStates = {{
          PrefetchItemState::NEW_REQUEST,
          PrefetchItemState::SENT_GENERATE_PAGE_BUNDLE,
          PrefetchItemState::AWAITING_GCM,
          PrefetchItemState::RECEIVED_GCM,
          PrefetchItemState::SENT_GET_OPERATION,
          PrefetchItemState::RECEIVED_BUNDLE,
          PrefetchItemState::DOWNLOADING,
          PrefetchItemState::DOWNLOADED,
          PrefetchItemState::IMPORTING,
          PrefetchItemState::FINISHED,
          PrefetchItemState::ZOMBIE}};
```

It outputs:

```
static constexpr std::array<PrefetchItemState, 11> kOrderedPrefetchItemStates =
    {{PrefetchItemState::NEW_REQUEST,
      PrefetchItemState::SENT_GENERATE_PAGE_BUNDLE,
      PrefetchItemState::AWAITING_GCM, PrefetchItemState::RECEIVED_GCM,
      PrefetchItemState::SENT_GET_OPERATION, PrefetchItemState::RECEIVED_BUNDLE,
      PrefetchItemState::DOWNLOADING, PrefetchItemState::DOWNLOADED,
      PrefetchItemState::IMPORTING, PrefetchItemState::FINISHED,
      PrefetchItemState::ZOMBIE}};
```

It would be more readable to have one argument per line, and in fact that's exactly what clang-format would do if the code was using single braces:

```
$ cat | clang-format -style=chromium
static constexpr std::array<PrefetchItemState, 11> kOrderedPrefetchItemStates = { PrefetchItemState::NEW_REQUEST, PrefetchItemState::SENT_GENERATE_PAGE_BUNDLE, PrefetchItemState::AWAITING_GCM, PrefetchItemState::RECEIVED_GCM, PrefetchItemState::SENT_GET_OPERATION, PrefetchItemState::RECEIVED_BUNDLE, PrefetchItemState::DOWNLOADING, PrefetchItemState::DOWNLOADED, PrefetchItemState::IMPORTING, PrefetchItemState::FINISHED, PrefetchItemState::ZOMBIE};
```

generates

```
static constexpr std::array<PrefetchItemState, 11> kOrderedPrefetchItemStates =
    {PrefetchItemState::NEW_REQUEST,
     PrefetchItemState::SENT_GENERATE_PAGE_BUNDLE,
     PrefetchItemState::AWAITING_GCM,
     PrefetchItemState::RECEIVED_GCM,
     PrefetchItemState::SENT_GET_OPERATION,
     PrefetchItemState::RECEIVED_BUNDLE,
     PrefetchItemState::DOWNLOADING,
     PrefetchItemState::DOWNLOADED,
     PrefetchItemState::IMPORTING,
     PrefetchItemState::FINISHED,
     PrefetchItemState::ZOMBIE};
```

Could it be made to do the same for the double braces case?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNVtlu4jAU_ZrkxSrKxvaQByCBidQGBuhUmhfk2JckM1mQ7ZQyXz9O6KqO2hioNJHlyI7vPdfKOceOSnpwJ2XBUwpMs0ea4WnGU98zHttxaDmIYIG0_gSRDBfx1bZkuZy44uKQgWZ7JGFlnlb5cT1CXGCREkRkegEPOyYnaI1hjzBj-KDZkwWDLQiSBALylVwNmjVBpqnZ_lOO-vk9Z7I6oO9WcyRRZUHjur0KqJ_3qRvk0L_bLP3vt_5qLbFaBq38cL2Z-aG_HK39zWI08zfj29C79tunGN2NgnUQzjazyU37qKU_8YMfvqcW9VjuejNf1BUH8_AERNUNevO78Ho-8uQe1YN8r31McLOYL9dKMNMgDFbfVEB-zm_Gga_1vbrZ438LoukDgcpK7CrBP5bPOWL4RAEvezpKQZn6Z9K-HeVP4LgKv08jdCsyK7O3BXMVqXoJmu7LKqMoApSXDBADTHGUARIlSvA9oLIAhFlc5VAItAOGsrRoKIgLitICbTERSCRYaFafI3iQw-yA9nLi7XFwhKElSrdyOUjGU0B7zFHF0yJGdSdRI4YJfCIZ1RPnCyVWK6vdkXKKmC6roC-SzQW1ciGBfK6KDyURQwGs_sH_gWurWvZ5jq18R1G27hNvJqd4uOp9RNHM1W4hSq5-Hn0njc-monF0TBsjl65bWy7HOSDplc2AllX0bLjST7mEmergmr2eafUca2Dp1LXp0B5iXaQiA_eN1z6rBEWYouOkqI18n4rkbXK9YpmbCLFrfN2ayhbLRVXUIWUuB1l2__S62rHyFxB5lkxTziupQWva7duGoyfugDrmcDg0hwYB04Gu1RsS0sODbrdH6NYmeoYjyLirdceaZb0uVg61rqenrmVYljGwbNMxB4bZ6UYm7ttDQs163sGaY0CO06xTl9IpWawzt6kqqmIuP2YpF_zlI-Y8jQuABlHmx5VISub-yeXJlutN_W5T_F8ZMfvk">