Issue 151844
Summary [Clang Format] Incorrect format for `for` loops when `AlignAfterOpenBracket` is `BlockIndent`
Labels clang
Assignees
Reporter szdytom
    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);
				}
			}
		}
	}
}

``` 
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to