llvm / llvm/llvm-project

[clang-format] Multiline requires expression breaks formatting

Open
#160,908 1 comment 0 reactions 0 assignees View on GitHub
clang-format
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

When requires expression that has multiple statements is used as operand of binary operator (and some longer expression), code is formatted incorrectly (doesn't respect column limit).

Example input:
```cpp
template
inline constexpr bool some_long_name_just_for_example{true};

template
using Typ = T;

template
concept C = requires {
typename Typ;
typename Typ;
}
&& some_long_name_just_for_example
&& some_long_name_just_for_example
&& some_long_name_just_for_example;

int main() {}
```

Output:
```cpp
template inline constexpr bool some_long_name_just_for_example{true};

template using Typ = T;

template
concept C = requires {
typename Typ;
typename Typ;
} && some_long_name_just_for_example && some_long_name_just_for_example && some_long_name_just_for_example;

int main() {}
```

`.clang_format`:
```yaml
BreakBeforeBinaryOperators: All
ColumnLimit: 80
```

clang-format version 20.1.8 (Fedora 20.1.8-4.fc42)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.