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

    <tr>
        <th>Summary</th>
        <td>
            clang-format: BreakBeforeBinaryOperators doesn't seem to work correctly
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    ```yml
---
Language: Cpp
Standard: Latest
BasedOnStyle: Mozilla
#AlignAfterOpenBracket: BlockIndent
AlignAfterOpenBracket: AlwaysBreak
AlignOperands: AlignAfterOperator
BreakBeforeBinaryOperators: NonAssignment
IndentPPDirectives: AfterHash
...
```


I get this result:

```C++
[[nodiscard]] auto
ass(
  int i,
  int atertertertertertertertert,
  int e,
  int arfdadfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd)
  -> int
{
  auto a =
    i + atertertertertertertertert & 1
    | 2 + arfdadfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd
        + e;
  return i + atertertertertertertertert
       + arfdadfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd
       + e + a;
}
```

I would expect somethig like this:

```C++
[[nodiscard]] auto
ass(
  int i,
  int atertertertertertertertert,
  int e,
  int arfdadfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd)
  -> int
{
  auto a = i
             + atertertertertertertertert 
             & 1
             | 2 
             + arfdadfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd
             + e;
  return i 
       + atertertertertertertertert
       + arfdadfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd
       + e 
       + a;
}
```

even better:

```C++
[[nodiscard]] auto
ass(
  int i,
  int atertertertertertertertert,
  int e,
  int arfdadfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd)
  -> int
{
  auto a = i
    + atertertertertertertertert 
    & 1
    | 2 
    + arfdadfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd
    + e;
  return i 
    + atertertertertertertertert
    + arfdadfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd
    + e 
    + a;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztVslu2zAQ_RrpQthgKSuWDjpYdoMGSJsAufVGSyOZNUUaJBXX_fqORK9ZHANNgB4CjGVylsdH8YmYuS43WXBFvW0aGdBZQCeDwcAPbrmqW15DEE3IdLXyzgfHVclN2TlvuQPrvD_nFso79eA2si_4rv8IKbkPBiyaSFGrSeXA3K1A5YYXS3BdYi51sbxRJagt0quZE7nmG5sb4MujTEwySMn6jKNSw502W3JdTQ6VNpALxc1mF-6rfmg1sRYrmz0Hz-f-fiYMFE48gofvkL9xu_BJw-Fwu73dO9xOj543pAZH3EJYYsC2stvISdaudBqwvDPvjXM0pUthi-5dxzM0wlunfZxbG7DEjwkRyhERsOnxHE_GvGxPEuFpoalKXlbc_tMvYOkOdBBEXzvk7c7G-S7QbYdwEkSznQcZEHwHZ8hj-Ip8OeQH4ylhvuZ9eO-Re3TERTHvGRtwrVFvkjwB-SBuPTUPvicYjGdn9HhD1rqVJYHfK5Q0sboBlGVNpFhCL9BPZT5XJrI_UcThSM9I9KWKE9Ue_F6-ryzxAYp-Q9bPhPs_aPzZShcKHh5BkTk4pPsp7fPSvljRL1-_pzjvLIQL1HqpVD-M3lMuZxQalllUplHKQyechKyQ2GUNsDNpuG-HXm1VSKnBqoCN8fIGaAge5FqbJSm06ZoUuQlbI7OFc6v-KmfXaLVwi3Y-LHSDEykfd3-DldG_sAinwtoW2xt2HcdXIxouMkrTcVKkZcyrESQFOpMqidiomidJQWkcSj4HabPue2FMwZr0EDjG7yUUGaOM0Zjhg9JoNIznLIFxxVhKyzFNWTCi0HAhhx2PoTZ1aLKe0rytLQalsM4egrzvzAD65RAfBbzQJvspVM2bsF8565n_BcziUzo">