<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/110600>110600</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-tidy] Fix-it for modernize-use-designated-initializers does not correctly handle nested structs
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
felix642
</td>
</tr>
</table>
<pre>
Let's assume the following code :
```
struct A
{
struct B
{
int c;
} b;
int a;
};
void foo()
{
A a{0, 1};
}
```
The Fix-it for modernize-use-designated-initializers will generate the following code :
```
struct A
{
struct B
{
int c;
} b;
int a;
};
void foo()
{
A a{.b.c=0, .a=1};
}
```
For which the compiler will emit this warning: `warning nested designators are a C99 extension [-Wc99-designator]`
The correct fix would be : `A a{.b={.c=0}, .a=1};`
godbolt: https://godbolt.org/z/Tjjrjz4e3
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzElM-PozoMx_8ac7Go0tCScuDQDuL0jiO9cyAGUoVklIRpp3_9E5S-me7OYfew2qrKDzs2-X4MliHo3hKVsD_BvkrkFAfny46MvuY7njROfZT_UAQuAsoQppEwDoSdM8ZdtO2xdYoQsiMCq4AdIWfrf9mG6Kc24nF1itN9gYi4uh6WJ9_80zZiC9kXK4gKmyfLfEb-bwFRfa6X8d1phZ1zwA_Ai28ucUQJ4sSAv-D2KVxU3-q5j68DYa2vqY7YOY-jU-StvlE6BUoVzUhlJJVqq6OWRt_IB7xoY7AnS17GPwVxgfT3OG6aTQtZteDcSMiqX2JaO4-XQbfDAqV145s25O-8aNQR46ADXqS32vYLpJytO7QUIil8MHc-oPSEEl-KAukayQbtLML-lP7bFkX6eRD21TdVbZ331Ebs9BUvbjIKm7UwOXtohKya57tSUf0k9jlr71TjTJxzDDG-BciOwGvg9erYON8Dr2_A69fz2Z9vO8oSVWaqyAqZULkVXIjsUPAiGUopui6Xkg5C5Cw7CKG42B46JVpJzZZkokvO-I4VGeMZP-yKjeANyVzJLhdZw-UOdoxGqc3GmPdxfnaiQ5io3G5ZzlhiZEMmLN2A89ZI26dRqw_gfO4Ovpyj0mbqA-yY0SGGzzxRR7P0kS9h--r3vxPlKKB18VEL84GDtMrQo9j3dz4kkzflD0h1HKZm07oReD1fbJ3SN-_O1Ebg9aI2AK9Xwe8l_y8AAP__VCpxGw">