<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63865>63865</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
ClangFormat C++11 brace initialization aligns arguments in columns
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
yuriisk
</td>
</tr>
</table>
<pre>
The bug can be reproduced with default ClangFormat config.
The code gets formatted in columns as follows
```cpp
MyData some_variable{long_parameter, very_very_long_parameter, short_param,
another_param, something_else, 10};
```
Expected formatting is
```cpp
MyData some_variable{long_parameter, very_very_long_parameter, short_param,
another_param, something_else, 10};
```
I think the behavior can be fixed in `clang/lib/Format/FormatToken.cpp`:
```diff
--- a/clang/lib/Format/FormatToken.cpp
+++ b/clang/lib/Format/FormatToken.cpp
@@ -194,10 +194,10 @@
}
// In C++11 braced list style, we should not format in columns unless they
- // have many items (20 or more) or we allow bin-packing of function call
+ // have many items (20 or more) and we allow bin-packing of function call
// arguments.
- if (Style.Cpp11BracedListStyle && !Style.BinPackArguments &&
- Commas.size() < 19) {
+ if (Style.Cpp11BracedListStyle && (!Style.BinPackArguments ||
+ Commas.size() < 20)) {
return;
}
```
Per my understanding, the code shouldn't be formatted in columns if either (1) bin-packing is disabled or (2) the number of items is less than 20.
I'm using clang-format version 16.0.6
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVU2PozgQ_TXOpRSEDYHkwKFDb6SWdqWRdu4tAwV4Y2xkm_Rkfv2qIKEzs61Vz542QsEq7Fdf75Wl96oziAXbHdnueSOn0FtXXCenlD9vKttci689QjV1UEsDFYLD0dlmqrGBNxV6aLCVkw5Qamm6k3WDDFBb06ouYvEzi5-Wf0KpbYPQYfDQzvsCNqAM1FZPg_Egya61ffO3g1m8PPU4LhaAP67PMkjwdsDXi3RKVhpZftTWdK-jdHLAgI6JEi7orq_z3z-_-d66sJiYKG_Q0tjQo1vNMDsJvTLdK2qPZOIxy59Zcvwpvsc8f_s2Yk2J3VJUpgP1_0joP-XzAnTkDIFYgL28KOvuVGjVt6WDlBK1n4mTVhUTp4UH6-KrPaOJKOssZsnTI_7qtFFtu5i22y1IJk6fhFxgxHF5oPrVk2nM0hi2_JAyUfIYmDi-r-eP914BVWtZ31_ixMQJXgyUi3vOoXKSxKGVD-DDVc-VfkNq0qQbMDbcuPHI_clo9J6qfL0VAe7gvbwgDNJcQQUcPDCxFzFYB4N1yMSBlm8IkpQDlTLbUdZnop1toZ1MHZQ1UEut10p9Hlqa5lewYUWWrpsGNMFHazqqJfw_qSJROY6cH-dC_a58mI3ARMZEBkzwZdNRmS-yPj_doW4bVkD6lXYYpI-8-o5M7ClklpTAD_MqPz6k_Hn3-3-JIC_pWVE_di9iJn6MYI7VYZicWeX2AZ8-VOAXdDBcYTINOh-kaRRxu5wVOU_UhViGiTzMqvxotqoWUNE4oPw4xfbYTeWhUZ5GT0PdJxrQFvJgpqFCR_1eKKI83JgqDYj4hxn_wkQ-wOQJcpbg9kb0CzpPTOFZFEe3Bm6aImkOyUFusODZ_pCkh5jzTV_IpInztGp5VadZhfs6bblIcsRW7FueyI0qRCySOOcp3yXZjkdNmqRYHw67BDHJBWdpjINUOtL6MkTWdRvl_YRFluyz3UbLCrW_33iuoE3bauo8S2MSrX8_FlTQWDzebD_JHJRRQUmtvstZClKrjm6ylTDvLdhMThd9CKOnCTirpFOhn6qotgPNKn25v7ajs39hTSNrDtwzcZpj_zsAAP__WN9drg">