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

    <tr>
        <th>Summary</th>
        <td>
            [Clang Format] Incorrect format for `for` loops when `AlignAfterOpenBracket` is `BlockIndent`
        </td>
    </tr>

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

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

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

<pre>
    Clang Format doesn't respect its `AlignAfterOpenBracket` options when formatting multi-line for loops.

Here is a piece of code it produces when `AlignAfterOpenBracket` is set to `BlockIndent`

```cpp

void SmoothenMountainsPass::smoothen_mountains(
        TileMap &tilemap, std::uint32_t step_i
) {
        std::vector<std::pair<TilePos, Tile>> replacements;

        for (std::uint8_t chunk_x = 0; chunk_x < tilemap.get_size(); ++chunk_x) {
                for (std::uint8_t chunk_y = 0; chunk_y < tilemap.get_size();
                 ++chunk_y) {
                        for (std::uint8_t local_x = 0; local_x < Chunk::size; ++local_x) {
                                for (std::uint8_t local_y = 0; local_y < Chunk::size;
                                     ++local_y) {
                                        TilePos pos{chunk_x, chunk_y, local_x, local_y};
                                        smoothen_mountains_tile(tilemap, pos, step_i, replacements);
                                }
                        }
                }
        }
}

```

The function parameter's format is OK, but the for loops aren't, it should be something like:

```cpp

void SmoothenMountainsPass::smoothen_mountains(
        TileMap &tilemap, std::uint32_t step_i
) {
        std::vector<std::pair<TilePos, Tile>> replacements;

        for (std::uint8_t chunk_x = 0; chunk_x < tilemap.get_size(); ++chunk_x) {
                for (std::uint8_t chunk_y = 0; chunk_y < tilemap.get_size();
                        ++chunk_y
                ) {
                        for (std::uint8_t local_x = 0; local_x < Chunk::size; ++local_x) {
                                for (std::uint8_t local_y = 0; local_y < Chunk::size; 
                                        ++local_y
                                ) {
                                        TilePos pos{chunk_x, chunk_y, local_x, local_y};
                                        smoothen_mountains_tile(tilemap, pos, step_i, replacements);
                                }
                        }
                }
        }
}

``` 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsVsGO4zYPfhrlQkygyE4cH3xInA3-xY_FLtC9B4rMxOrIkiDR02afvpDtzSSZ7WyPRdtAQCRS5Cea5AfKGPXZIlZsuWXL3Uz21LpQxW_NhVw3O7rmUtVG2jPsXegkQeMwWiYKgoDRoyLQFIGt-Mbos92cCMNnj3YbpHpGYisOzpN2NsJvLVo4DV5I2zN0vSH9ZLTFJAXjnI9zxjeMb_6HAUFHkOA1KgR3AuUaBE3gg2t6hZO793B1hIgE5NKtrXHq-aNt0CbdiJI2w1Lej5IXpxv4pXOOWrSfXG9Jahu_yBhZtmHZJk6qQ_ddx8R6MC2_aoOfpAcmVqQNdtIzUUOkZrTstaVMHAgioT_oZCNKYMV2tL7ee0FFLrCsvkq81Omc_H9xMTlNW5Z9YNkHCOiNVNihpciy7RQXL9MHZWJ9B78-EKi2t8-H34FlO-As294IapjePT8jHaL-hik2UaZbTGyZ2E537x7-U6zLI9blfayr2zvQyyPoO7jGKWluY3wV1FAnd1MyE-w1uOnSD3B-CnV5hLr8CdSDV0i_W_QfRTmuKfvgXWTFayJquH6eGq4RfN9eWLF7i5qq7U0ZH1I-mFjflK4fi22qV1Hf19p9rqZV7O4kt8frftxMx9cWHI9fW4RTb1UiDPAyyA4JAxNFnIgjNfXn_6fXHHsCam-oA2TAgZiSVhPE1vWmgSNCdB1SmyjH6GdMGfmv_f_27Z_WHQFcFf8EJoC3TXlPBA_qfy0vwKypsqbMSjnDalEs80XJRV7O2urULPJVLot8gVyVZZYVDa7FosjzVc6bfDXTleBiydc84xnPeTnnx6zkC7UqZJMLsTixnGMntZkb89LNXTjPdIw9VovlYp3nMyOPaOIwGAmh0gzEhEgzUqiSwdOxP0eWc6MjxVcXpMkM09Tt1MSWO_holQshDUwTlQ2ltOInF1KcI4f9laHmzTQz64OpWiI_0JTYM7E_a2r741y5jol9etv09-SD-xUVMbEfYo1M7KdwXyrxRwAAAP__Jef79g">