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

    <tr>
        <th>Summary</th>
        <td>
            [clang-format] AlignAfterOpenBracket: BlockIndent: weird close-bracket when ')' or qualifiers exceeds ColumnLimit
        </td>
    </tr>

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

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

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

<pre>
    Hello!
I'm using clang-format 14 with option ```AlignAfterOpenBracket: BlockIndent``` and I found strange сlosing brackets behavior when close bracket or following qualifiers exceed ```ColumnLimit```. This case appears when ```return-type``` + ```function-name``` + ```arguments``` can place on one line, but ```) + qualifiers``` cannot.

Here is an example of .clang-format file:
```
# BasedOnStyle:  LLVM
AlignAfterOpenBracket: BlockIndent
AllowAllArgumentsOnNextLine: true
AllowShortFunctionsOnASingleLine: Empty
BinPackArguments: false
BinPackParameters: false
BreakBeforeBraces: Custom
BraceWrapping: 
  AfterFunction: false
ColumnLimit: 82
ContinuationIndentWidth: 4
IndentWidth: 4
PenaltyReturnTypeOnItsOwnLine: 41
PointerAlignment: Right
SpaceAroundPointerQualifiers: Both
TabWidth : 4
UseTab : Never
...
```

Here is an **example** when ```AlignAfterOpenBracket: BlockIndent``` **works fine**:
```
std::string some_function(const std::string &a, const std::string &b) noexcept {
    // Some code here...
}

std::string some_function(
    const std::string &a,
    const std::string &b,
    const std::string &c,
    const std::string &d
) noexcept {
    // Some code here...
}

void check_range(const std::size_t &idx) noexcept {
    // Some code here...
}
```
Everything is just as I expected.

But if I increase function name length or add some function attributes (e.g. MACRO), then I have weird behavior: only ```) + qualifiers``` places on the next line.
**Example:**
```
void check_range_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(const std::size_t &idx
) {
    // Some code here...
}

void check_range_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(const std::size_t &idx
) noexcept {
    // Some code here...
}

CXX17_NODISCARD CXX20_CONSTEXPR void check_range(const std::size_t &idx
) noexcept {
    // Some code here...
}
```
**Expected:**
```
void check_range_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(
    const std::size_t &idx
) {
    // Some code here...
}

void check_range_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(
    const std::size_t &idx
) noexcept {
    // Some code here...
}

CXX17_NODISCARD CXX20_CONSTEXPR void check_range(
    const std::size_t &idx
) noexcept {
    // Some code here...
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNV1tz6jgM_jXhRdMMBCjwwAOXdg4zPaVbunv6xjiJID41dtZ2Sjm_fmWHEMq2W85s99JhILFk-ZP0SXJjle6GX1AIFUStoDkNmqNZEPU2UBgu15AIJtcXK6U3zEKrA1tuM1C55UpCcNksPyPB13K0sqjnOcqxZskT2qA9grFQydNMpijtQRmYTGEGK1XQr7Ga7CME01bQbwnlz4xLAwZizNgzVxq2GUqCogxWQqDVlSLUW7fj94IJvuKoDeBLgpjW2CZKFBt5wze8hhDCQ8YNJIzssTxHRvv8EQcNjbbQ8sLucqyBB9G41lgVMnFRuJBs854O0-tiQ76bWp4wCblgCQIFUEkEwSUG0QTiwtYbg2jgLdV-vbIglQ3LVJXfX1AjkENkG1_YJhdkfQXhq9ytuEBKyX7b4aDyNWrDmIKRzuXC7rwewM3Nb19L8Vnp3WtSQuhrVDk-l7f4Ym-cj6RvdYFHiotMaXu9jyOpjhaUS4GV9tUmt7tSfczlHZ16MOvEKyYMvhLfMU25sC5aJ3KN7GmMFAl06NHLJ4WxalMp0Oo3TVwgBE5YLgN4ryuIJ1aPmUWSflQtS8tlwdyOMjbfeGozp9LZ19ebq3combC7e8-8ByLeXM4ogFtZxaOzL887xSWh8llx0XCye77O9jlY5OTLSLvy2mv-UrPIJU3RsV7zgcUeBByh-NUgLfuVW3xGXa6GYfg2cU7pF0REptGehOXLSWX9XK8oTWyVfjLEYLk3-R6PjU2dqE0P2rUFoza4rAo1iPoJ0czCqVYQXTJXge9KY1eOUrnOklOR9sYVO4Ck1_SBBR1E-1OEjGJRR6s3PY7TR_Bqs38J9Ay1-Dy15Dy1tOoSnxKFZ8VTSDJMnpa-97-RF_4Dl9adzNOXv3_qa45cEal3NnOuEWW_UxMAZmge4UuOicX0VWMdU1PmK5JymVAPoXFRpQtc2weBcu3moQaWpj6ftQKzFEDq6mgIaR_DdQhfR5P7OTnk2GZdVcyABhzCFrlOD9POFYOSYnfeOPDDxLhpQhZBUrf1I6Vyw9fL1b4e2_v3NwNzmpclO_PvowQeyPN5nPkI29mQPoHPk8fHVm95O5_OFpPR_RToPWouJ_PbxcPV4909_CzfPwnb6YQveVBy_J8jwvvd5H9AiZ8F99-Q499FWaW-kQ7b6aA9YA3LrcBh0B0fXx-D7hTOmtz0WnYzf1u_qG7r5R0g6vnm13MN809XdgNHF6pGocUwszY3nqvOlzX951HEYUJ3tuhaiOfq5yLX6jvRml65MQVd7qLrbrfTazeyYXQZtXCQXKa9y37cTBPsN5No1R10kg4mgw42BItRGOdtEEUSt-BN0DM53ODDqBlFzW6r22p12t1WSIM1pqdBG7v9dtJrBZ0mbhgXocMRKr1u6KGHFBdrQ0LBjTW1kBlDEUQfXGefFZZuwEPzbLqDZsOfPPTI_wBiPxnZ">