<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">