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

    <tr>
        <th>Summary</th>
        <td>
            Clang-format unexpected aligning behavior
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-format
      </td>
    </tr>

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

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

<pre>
    As described in the official doc [(Link)](https://clang.llvm.org/docs/ClangFormatStyleOptions.html), setting `AlignArrayOfStructures` to `Left` should result in:
```c++
struct test demo[] =
{
    {56, 23,    "hello"},
    {-1, 93463, "world"},
    {7,  5,     "!!"   }
};
```
However, when using the build-in clang-format functionality in clangd version 18.1.2
>  Output of `clangd --version`:
> ```
> clangd version 18.1.2
> Features: windows
> Platform: x86_64-pc-windows-msvc
> ```
it results in the following:
```c++
struct Test
{
        int                     a, b;
        const char* c;
};

std::vector<Test> demo = {
        {56, 23,         "hello"},
         {-1, 93463, "world"},
         {7,     5,             "!!"  }
};
```
Which is OBVIOUSLY unexpected.

Trying with other arrays also results in similar outputs:
```c++
struct Vertex
{
        glm::vec3 color;
        glm::vec2 pos;
};

inline const std::vector<Vertex> vertex_list = {
        {{1.0f, 0.0f, 0.0f}, {0.0f, -0.5f}},
        {{0.0f, 1.0f, 0.0f}, {0.5f, 0.5f} },
        {{0.0f, 0.0f, 1.0f}, {-0.5f, 0.5f}}
};
```
*Notice the fifth floating point numbers are not aligned*

The `.clang-format` config I'm currently using:
``` YAML
BasedOnStyle: Microsoft
IndentWidth: 4
ColumnLimit: 100
SpacesBeforeTrailingComments: 2

# Allows
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: true
AllowShortBlocksOnASingleLine: Empty
AllowShortLambdasOnASingleLine: false

# Line breaks
BreakBeforeBinaryOperators: All
BreakConstructorInitializers: AfterColon
BreakBeforeBraces: Allman

# BracedInitializerIndentWidth: 4

# Bin-packs
BinPackArguments: false
BinPackParameters: false
PackConstructorInitializers: Never
AlwaysBreakTemplateDeclarations: Yes
ExperimentalAutoDetectBinPacking: false

# Alignments
AlignConsecutiveBitFields: true
AlignConsecutiveAssignments: true
AlignArrayOfStructures: Left
AlignConsecutiveDeclarations: true
PointerAlignment: Left
AlignOperands: AlignAfterOperator
AlignAfterOpenBracket: BlockIndent

BraceWrapping:
  SplitEmptyFunction: false
 SplitEmptyRecord: false
  SplitEmptyNamespace: false
 BeforeLambdaBody: true

ContinuationIndentWidth: 4
Cpp11BracedListStyle: true

EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: Always

UseTab: Always
FixNamespaceComments: false
NamespaceIndentation: All
```

## Note
The clangd binary is from the offical LLVM release 18.1.2, downloaded from Github. I didn't compile the binary by myself.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMV11v4jwW_jXmxgIlDp8XXAQou5WYYbT0ndFcvXLsE-KtY0e2U8r--pWdACG081aKmuLz5PH5eHxsU2vFUQEs0WSFJpsBrV2hzfLgoLAUzCDT_LxMLeZgmREZcCwUdgVgneeCCSox1wz7j8l8J9QrIgs02SAyL5yrLEpSRLaIbJmk6jiS8q0caXNEZMs1s4hs1358q01J3cGdJewrJ7Syo8KV0lORNbbgnFBHjKZRKsVRpcbQ8z4_OFMzVxuwaBphp719B7nzv2yha8mxAVtLh4XybkQbFKVoGjUPQ2TlnzBqAxV2YB3mUOomFRglm_arWQvEGGM0W02m3i-S-L9-hJACpNSIEDTbILK-Aw9jD1sk42nAI0JO2kj-MXgWKCctsQcjEoeHBMDVoQ1KVr2Qmp__1id4A-MZTgUoXFufO1-wrBaSD4XCoRbDPCQd57ViPuVUCnfGFyvHb2Cs0ArH81E8Iu1UyRPG-9pVtcM69wlvwcNhC_duXHOdPOGec37oH_i3QJuiJik-CcX1yd6MPyR13m9vfJ9P_56OhxUbtrBhad_Yp1ML18rBXgScayn1Sajj19TxAtb15ICihVAORYvmoT7p2a0w0YJpZR1mBTWIpJjdTN36tZNw70aSvgFz2qBkHeZLnoIgvRRxd9p7EaJo8ZkIg-mrImzBs5Zy0rz909FhmP2fdfirEKzAwuL96ufz_q_D7jeuFbxXwBzwUTf0F3P2Ej0JV2DtCjCY-hVuMZVWd4tmRSkkNVgHBdqvle0nGAfvj4U7yvKa8AQzLX3SPzYTXGn7h9oJJYUC3BT7sZCtB8mT17yD97-lsO6jiqLZKh5FuS9Q1H2HCnnwZXQYjSZh-L52DcUFFH9CMWlHAwP-I8Ud1ZVi2OP4ihoQSb9rJxg0K0_krsC51DQ09koL5bCqywyMxdQAVtph6ns9cETSO7EU4Ff2qNvDfMdnWuXiiJ8RmZWY1caAcvLcdL9HoeDf6bddM7aiFvhehc3Ht5Vvghltdd6u9WfFQblfgrvCW8fN6FrLulQ7UQrnR-OoDfNQUQZ2Bbk28GKokEId17osQQW5YtINBZEEp74FtQ0u_H8otHHbtifbvUoPQh0l7IQK3j0HqfXxz_nBUQdhmodPnKkfPthpXX0NuZKavT5Cn8rKnR9YaZlx-gjOqbTQj9wbcWaAvrbhr_z_TepWQlFz3ldgqNMmZC6VsgNb-6Xml7c2z0o4QaX4H7TA3IFZa6nVI63x1WnZSqr6LgU77xB-XPzOB0INK8quEQj1g7LX1Bzra8U7sbfmH9TQElzrbsfujX8I7HvY1tuUn-jZhsheoKwkdbABJqmhQTUe_Rtap57eKzDC-0NlWju9AQfMtb40i-PjAoWzVhNHO6k4Ku8fsNqJN1gJtxUgue1L5x6WhvPlNR894ONZLklxOMV9SNaP8sb2w_cQMFenP-AJelK8FYCf3EvlorKuU-248oJ4hcAV1kGjh26igmR-GVpV3T6D8aGSwoVFclnLvTx3EP8Bpg3v2zuA77QE6ztLH9PIull2K83P9ym5tCrlhKpDzj5pZlUVx432d8K6ayfsMwVf_LIN-UkZA2u_aS5yAaYn0Cu08fAR2yi4y_6XhRea9W1b8X6NvttIO1m42pvo6CXZ147R34ouCvci_64d3DaW9miahfbjzy650eXtskMl3u1-fsMGJFALl6MrWWOuT0pqyoE3n_xLuKLORvgZc8EVIjOHmS4rIZv9r50gO-PybEHmowFfJnyRLOgAlvEsjskijuazQbFM4mhCKOezZBFPKVlE8YxP4zGZZvNsNiYwEEsSkXGUkHE8TubRdBSPJ2OexAtKySJj4wkaR1BSIa93r4GwtoblfDpOFgNJM5A23P0IudtTCfG3QbP0nw2z-mjROPIHF3sjcsJJWK67t4nbEa_Zv_32nkFB34Q2g9rI5f2t8NjkiekSka3nbV_Dyuj_AnOIbIO3_qYYHP5_AAAA___30G3V">