<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/55610>55610</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-format] Invalid syntax after `const` is moved when `QualifierAlignment: Left`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
H-G-Hristov
</td>
</tr>
</table>
<pre>
Original code looks like:
```C++
void func(::mylib::namesp::MyClass const& obj) {
...
}
```
After reformatting with `QualifierAlignment: Left`
```C++
void func(::const mylib::namesp::MyClass& obj) {
...
}
```
Expected:
```C++
void func(const ::mylib::namesp::MyClass& obj) {
...
}
```
My full `.clang-format` is:
```yml
---
BasedOnStyle: Google
Standard: c++20
IndentWidth: 4
ColumnLimit: 120
AccessModifierOffset: -4
AlignAfterOpenBracket: AlwaysBreak
AlignArrayOfStructures: Right
AllowShortEnumsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortLambdasOnASingleLine: Empty
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterClass: true
AfterEnum: true
AfterFunction: true
AfterStruct: true
AfterUnion: true
BeforeLambdaBody: true
BreakBeforeBraces: Custom
BreakConstructorInitializers: BeforeComma
IncludeCategories:
# Third party headers
- Regex: '^<(boost|bzip|fmt|grpc|gtest|gmock|isl|json|openssl|tl|proto|zlib)/'
Priority: 3
SortPriority: 0
CaseSensitive: true
# This library headers
- Regex: '^<(nblib)'
Priority: 4
SortPriority: 0
CaseSensitive: true
# C system headers
- Regex: '^<.+\.h>$'
Priority: 1
SortPriority: 0
CaseSensitive: true
# C++ standard library headers
- Regex: '^<.+'
Priority: 2
SortPriority: 0
CaseSensitive: true
# Other headers
- Regex: '^".*'
Priority: 5
SortPriority: 0
CaseSensitive: true
IndentPPDirectives: AfterHash
PackConstructorInitializers: Never
# Different ways to arrange specifiers and qualifiers (e.g. const/volatile).
QualifierAlignment: Left
# Specifies the use of empty lines to separate definition blocks, including classes, structs, enums, and functions.
SeparateDefinitionBlocks: Always
# Add namespace comment after short namespaces
ShortNamespaceLines: 0
...
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytVtFy2joQ_RrzosEDNobwwAOYpMlMUnJL7_RZtte2ElmikkzifP1dyXYgNDdp2jCMLWtX2nNWq91NZNYsNooVTFBOUpkB4VLea8LZPXjh0hutvVH_nI7af-wFK_t3s3vJMpLXIvWCM7sgXFYNZ0k7FLQCvWvHN03MqdZoRGjjBVMikzsvmBNv1u1E8Of7fmdstj6xegxlmRtQREEuVUWNYaIgD8yUBNX-qSlnOQO15KwQFQiDtsk15OZkj9-l4_CSt0n9JZ3zxx2kBrIPO7zF9jtu_0uENw2a5Nw62E85FcWwdT1-E6b_D3dT8XZmOBy2gxXVkG3E1jTchhf5ImWBIyfbGioyqqwXSNoyDjoQVyLDg_zBMlNa6aSdjSWvK3HNKubOeNxrL9MUtL6RmYuDTZ5rcArDbp2LDBdCmx2IlaLpfauw5A-00SsF9P5YUynabPKtUXVqagWWLvnGitL0Slw-bEupzLmoK70Ryy0GJIdrJhzHnHINp6oXeICG4fH9on5e7Uxzqn5NqySjbyqvmLhFJktV1Dbq9YnpTnxLFQYHUv9Fjm6AH4rudmjg-UAJcX5qQwgXoA_ghcRSflXQE3xV2PryVdG_4pVFK3vToXXCClPWS7k7sFbFsXBI41obWR0pxPauWLNSXQlmGKaJp84N7dpYVhXt4y3ldQYxNVBIxUAfOcQLQvK9ZCojO6pMQ0qgmd2nEw_JNyjg0W57-HnBzIvOvRAv8lkiJea_WZw8sR2-8sp-FGqX2pcBJysqmd7jm2mOzzuNHpnFEoNVuwljHzsljcT3k732wdwLLqyV54t9qxgiN80RkPAg3WJMnWiMDtIYb-kWjaGX9tCKj0-j84AtEomi6uMuEEmP-W3Ak08EHBPdaAPVx8D6Ng9FsY9p59wLJu8BHn8m4DYFEt2lxT_ztiPwDurgE1FvTImV-QMQgwAhLt-DGH0KxLaM3N6umcJ6iwru9ru0c0l12SrZLPlGrvgKe1BdnUO-a5bnoHBXYksHMZJQLBeiAKKxprsCpAkeIPnZ9yUamZ-BX_h9J3Sxl5wahmUwmHfF-I0m5tnyttsfjZZAag1E5gRsPcBIEeCwaMAchUmMZJAzS0QKknDMLdgPxIS5LGebp9Tmd3CTLW83BFvO7MDiz_uC1UHcdluvn3detRs_19ED1GWWkbYnweyMtCvLiFDXxGlb3g7SbpUrel_7SVvt3MYvepJD69L3G4NsEWbzcE4HhhkOCy9avWhWojW5Ent0bYbJQBj62GHApe1ZuG6GVHIPGXkoQbzbUA5qxRelMTtXIWwKviiwEa0TH1niB-f7_jXEhH2HYYefTOvaevsiiqbj0aBczNJoMk2iaTqmeRgE4_kIolE4DiNAhewsH3CaANeWEJIYsEUwCoJRFIzG48ksnPoJBGEa0HFCZ_NgPgZvMoKKMu5bw75UxUAtHIakLjQKOdNGH4R4-EgNoN-f1gb9v7gcfhleKlSV-4GDvHB4_wOneKDL">