<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/76717>76717</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang-format-18 `AlignArrayOfStructures: Left` breaks braced initializer list
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-format
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
MartinsSmirnovs
</td>
</tr>
</table>
<pre>
Given following `.clang-format` file:
```.yaml
AlignArrayOfStructures: Left
ColumnLimit: 0
Cpp11BracedListStyle: false
IndentWidth: 4
```
And following `foo.cpp` file:
```cpp
#include <list>
#include <string>
enum Code {
X,
Y,
Z
};
struct Entry {
std::string data;
Code code;
};
struct Message {
Code code;
Entry entry;
};
using Messages = std::list<Message>;
static const auto messages = Messages{
{
Code::X,
{
"data1",
Code::Y,
},
},
{
Code::Y,
{
"data1",
Code::Z,
},
},
};
using Entries = std::list<Entry>;
static const Entries entry = {
{ "data", Code::X },
{ "data1", Code::Y },
{ "data12", Code::Z },
};
```
I expect that `clang-format foo.cpp` will not perform formatting, however, it does and breaks initializer list of `Messages`:
```cpp
#include <list>
#include <string>
enum Code {
X,
Y,
Z
};
struct Entry {
std::string data;
Code code;
};
struct Message {
Code code;
Entry entry;
};
using Messages = std::list<Message>;
static const auto messages = Messages{
{
Code::X,
{
"data1",
Code::Y,
},
},
{
Code::Y,
{
"data1",
Code::Z,
},
},
};
using Entries = std::list<Entry>;
static const Entries entry = {
{ "data", Code::X },
{ "data1", Code::Y },
{ "data12", Code::Z },
};
```
If `AlignArrayOfStructures: Left` gets commented out, the formatting for `messages` works as expected, but the list of `Entries` is not aligned anymore:
```cpp
#include <list>
#include <string>
enum Code {
X,
Y,
Z
};
struct Entry {
std::string data;
Code code;
};
struct Message {
Code code;
Entry entry;
};
using Messages = std::list<Message>;
static const auto messages = Messages{
{
Code::X,
{
"data1",
Code::Y,
},
},
{
Code::Y,
{
"data1",
Code::Z,
},
},
};
using Entries = std::list<Entry>;
static const Entries entry = {
{ "data", Code::X },
{ "data1", Code::Y },
{ "data12", Code::Z },
};
```
`clang-format` version:
```
$ clang-format --version
Ubuntu clang-format version 18.0.0 (++20231208042253+5fc76e6b6da7-1~exp1~20231208042409.1357)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsV01v2zgQ_TX0ZWCDoizJOejgj2RRIMUegsVuc6PEkc0tRRokldR76G9fUJJjy46dbVEsiiJA4JicmTePM-LziDsn1xoxJ8mCJKsRb_zG2Pwjt15q91BLq82TGxVG7PLf5BNqqIxS5lnqNZCUTkrF9XpcGVtzT1IKlVRI4jmhK0LnJKXd32THa9XtzZVc67m1fPd79eBtU_rGoiPxHO6x8p3P0qim1veylj4YaL-73UbRwvISxb10_sHv2lRQceWwc_mgBWr_pxR-EyzTExo9Ay2Gh6iMmZTb7WX6wdjtsFjqUjUCgcRLJZ0n8e1rJuet1OuDsf1E3dSwNMEjW3RbAAB_EbY8rD4dVo99cLYi8eIYyLV1g1vt7W6I5bwI9ON5RwAE9_wlODi06Usj8AB5Cf4jOsfXJ2TP48NuxwTD5xXcxgVKPawDEq8OfLtaLntjKNwpJ-5lCaXRzgNvvIH6GGcPOuA6WOzJd-mGNR86E8ZC2SLC2JnXEOXTKyirwd75ep_lOsriPO2rtA4oj9_E5VJzQiPlhd7cdu292pl9PHaPZryC047sz9Ed47glrxXr5NSD4l_1Z2f4j5cLMNSHD4Bftlh68Bvugz4caxwcicWzVAq08bBFG6zQufhw89kSNuYZn9CGr9KDMOiAawGFRf7ZgdTSS67kP2ghFBhMFXK9PMgp_Wl0COCbpehdh17UZHCXLyrQ91z5t-Xniv5cVbLvEcM3BOinVB_4cfrzo8SnVYE3hqSUwhq9g9LUNWqPAkzjQ0K_wSMRCl8DWn3QFHg29rMD7nqNQxHCisa3oUc61JcyhEjXihwPnFAA17va2Pcp6ZdQp_cp6Veckv6HIelkLAo6AU9onTT6XBn2d38Kg1FqPN5HtPY_ikb7ZujSO0A0m9AJBcJmhC0IWzDK4ojRGZ0ylsSELZKqzFJMi1TwbBx9xS_b6OuR05TeTKI4yQi7OeE2EnksbuIbPsI8yuiU0SSi0WiTT4WI40RkVXKTYMwyztgsiQteiaqoZogjmTPKpjSiLJpGMxZNKprEUcrTshIchYjIlGLNpZoo9VRPjF2PpHMN5lmaRdlI8QKVa9-7GRvUkrHwJm7zEDYumrUjUxqeLncA8tIrzI-jxtHsv_1y9PNn0b5In42ho8aqfOP9NsQQdkfY3Vr6TVNMSlMTdhcY9P_GW2v-xtITdteeyxF21x7t3wAAAP__NyNZHw">