<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - AlignAfterOpenBracket not working when parameters after lambda expression."
   href="https://bugs.llvm.org/show_bug.cgi?id=41676">41676</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>AlignAfterOpenBracket not working when parameters after lambda expression.
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>8.0
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Tooling
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>jonas.vautherin@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Using this sample code:

```c++
void gets_changed()
{
    sssssssssset_param_async(blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1,
                             [one, two](Argument argggggggggggggg) {
                                something(arg);
                                foo();
                             },
                             bla3);
}

void unchanged()
{
    sssssssssset_param_async(blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1,
                             [one, two](Argument argggggggggggggg) {
                                something(arg);
                                foo();
                             });
}
```

And the following `.clang-format`:

```
Language: Cpp
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
IndentWidth: 4
AlignAfterOpenBracket: Align
ColumnLimit: 80
```

The output of clang-format is:

```
void gets_changed() {
    sssssssssset_param_async(
        blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1,
        [one, two](Argument argggggggggggggg) {
            something(arg);
            foo();
        },
        bla3);
}

void unchanged() {
    sssssssssset_param_async(blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1,
                             [one, two](Argument argggggggggggggg) {
                                 something(arg);
                                 foo();
                             });
}
```

As you can see, `unchanged` is not modified, but `gets_changed` gets corrected
by clang-format. However, because of `AlignAfterOpenBracket: Align` in the
config file, it should always behave like `unchanged()`.

It seems like this started happening with clang-format 8+, for functions that
take a parameter (here `bla3`) after a lambda expression.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>