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

    <tr>
        <th>Summary</th>
        <td>
            clang-format: formatting is strange for lambdas with attributes in designated initializers
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    clang-format doesn't seem to correctly format lambdas with attributes, at least as part of designated initializers. For example, it wants this formatting for the following code:

```c++
SendCuratorRpcsRequest request = {
 .response_prototype = request.response_prototype,

    .choose_curators = [] [[clang::coro_wrapper]] ()
    -> k3::Gen<AddressAndChannel, void> { LOG(QFATAL) << "DO NOT SUBMIT"; },

    .rpc_timeout = some_long_expression + with_multiple_long_terms +
 that_wraps_across_lines,
};
```

The formatting of the lambda is atypical, not aligning the second line with the rest of the lambda expression as is done with other expressions. I would expect something more like the following:


```c++
SendCuratorRpcsRequest request = {
 .response_prototype = request.response_prototype,

    .choose_curators = [] [[clang::coro_wrapper]] ()
                           -> k3::Gen<AddressAndChannel, void> {
 LOG(QFATAL) << "DO NOT SUBMIT";
                        },

 .rpc_timeout = some_long_expression + with_multiple_long_terms +
 that_wraps_across_lines,
};
```

or something closer to what you get if you remove the attribute but add a long capture list, with the second line at least indented:

```c++
SendCuratorRpcsRequest request = {
    .response_prototype = request.response_prototype,

 .choose_curators = [long_capture_list_here]()
        -> k3::Gen<AddressAndChannel, void> { LOG(QFATAL) << "DO NOT SUBMIT"; },

    .rpc_timeout = some_long_expression + with_multiple_long_terms +
                   that_wraps_across_lines,
};
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcls2O2zYQx5-GvgzWkCnbsg86-KMOAqQNmmzPAk2OLSYUqXJG62yfvqCkdbzpboGmPRQxBFOg_uR8_TSiIrJnj1iKxVYs9hPVcR1i-UnpcCQ1OQbzWGqn_PnuFGKjGExA8kIWDITYAAfQIUbU7B5hlDjVHI0iuFiuQTFHe-wYScgdpKeoiEERtCoyhBMYTC4oRgPWW7bK2T8w0hQOIQJ-UU3rMK21DBflmYBrS6Mttv6cboFrhFNwLlzSjA4GRb4R2V5kT__LbLi0kNt09bMf0ZtdFxWH-KHV9AF_75AY4jiKfA-iGLUwjUht8IRVGwMHfmyxV4zqFx4Lubv1AQBgqusQCCs9WKXBRp_8Ydj26U7e5xsdYqguUbUtRrHY9xq5EnL9db87kf8En_NB_wa9yHcbYyISbbzZ1cp7dCl7D8GaJBXFFt69fyPk6tfD5n7zTsg1iHwn8h0IKffv4Zf39_Dxt-3Pb--FlCLfgij2L8URW12xbTB0Q54oNFi54M8VfmmTfRs8CLntMaiazrFt3ahgjA3BtQrAteI-TqqUjoGoctb3xIxmi73It98U8taj-778VyLCqQdiABEsgeLH1mrVZ8IHBuXs2SdlkhHq4A0kkwOzaTKm-j_f5yYuRWlXE55WBK4x3ghoCm_hEjpn0iRq7tPDdTLZhIjg7Gd8Du23vP7Q1L7y-w6Yxz3_EdJ_78cLvP-_YA_xhibtAmFMffhSK4bH0MEZGeypv43YhIcBtGsjhmPHoIwBBck_0KrlrkeSOCX3-grcvhfXxm29Qc9o_vv22jeVf8vqa6D2lRgjrVKkVY0RE50vkPlD9NS__r4LvIkpc7PO12qC5ayYrReLYrlcTeqyWKxWK1PMZliovNBydtIzuT7qpZpnq1WWTWwpMznPlnKVLRdzuZrOZ4vjWmVZtjb5UpqZmGfYKOumzj000xDPE0vUYbkuslk-ceqIjp7OJbFMortjdyYxz1IB6esytuzw2TFF5Jvb74ElII7Kn_uvxGsHFLD-tcPIpIuurJlbSlDIg5CHs-W6O051aIQ8JFfG4a6N4RNqFvLQh0NCHoaIHkr5ZwAAAP___xvwEQ">