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

    <tr>
        <th>Summary</th>
        <td>
            An assertion was thrown when trying to format a document with clang-format
        </td>
    </tr>

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

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

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

<pre>
    Here is the message that `clang-format` prints
```
Assertion failed: Shift >= 0, file C:\src\llvm_package_6923b0a7\llvm-project\clang\lib\Format\WhitespaceManager.cpp, line 329
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0.      Program arguments: C:\Program Files\LLVM\bin\clang-format.exe -output-replacements-xml -style=file -fallback-style=LLVM -assume-filename=d:\opengl_tutorials\src\fps_counter.cpp 
 #0 0x00007ff600381a76 C:\Program Files\LLVM\bin\clang-format.exe 0x31a76 (C:\Program Files\LLVM\bin\clang-format.exe+0x31a76)
 #1 0x00007ff600381a76 
 #2 0x00007ff600381a76 (C:\Program Files\LLVM\bin\clang-format.exe+0x31a76)
 #3 0x00007ff95cf2cd84 (C:\Windows\System32\ucrtbase.dll+0x7cd84)
 #4 0x00007ff95cf2dd61 (C:\Windows\System32\ucrtbase.dll+0x7dd61)
 #5 0x00007ff95cf2f731 C:\Program Files\LLVM\bin\clang-format.exe 0xd5c1a C:\Program Files\LLVM\bin\clang-format.exe 0xd55fc
 #6 0x00007ff95cf2f731 C:\Program Files\LLVM\bin\clang-format.exe 0xd53a3 C:\Program Files\LLVM\bin\clang-format.exe 0xd0833
 #7 0x00007ff95cf2f731 C:\Program Files\LLVM\bin\clang-format.exe 0xceba6 C:\Program Files\LLVM\bin\clang-format.exe 0x9cff8
 #8 0x00007ff95cf2f731 C:\Program Files\LLVM\bin\clang-format.exe 0xa4cab C:\Program Files\LLVM\bin\clang-format.exe 0x9c81c
 #9 0x00007ff95cf2f731 C:\Program Files\LLVM\bin\clang-format.exe 0x8afff C:\Program Files\LLVM\bin\clang-format.exe 0x8b8f9
#10 0x00007ff95cf2f731 C:\Program Files\LLVM\bin\clang-format.exe 0x3875 C:\Program Files\LLVM\bin\clang-format.exe 0x20f1
#11 0x00007ff95cf2f731 C:\Program Files\LLVM\bin\clang-format.exe 0x2217f4 (C:\Windows\System32\ucrtbase.dll+0x7f731)
#12 0x00007ff95cf2f731 
#13 0x00007ff95cf2f731 (C:\Windows\System32\ucrtbase.dll+0x7f731)
0x00007FF600381A76 (0x0000791AEFB1A492 0x000000C2DE18B920 0x0000000000000016 0x0000000000000000)
0x00007FF95CF2CD84 (0x0000000000000101 0x00007FF600000000 0x0000000000000000 0x000000C2DE18B990), raise() + 0x1E4 bytes(s)
0x00007FF95CF2DD61 (0x00007FF900000003 0x00007FF900000003 0x00007FF60061708A 0x00007FF600616F5E), abort() + 0x31 bytes(s)
0x00007FF95CF2F731 (0x0000000000000149 0x00007FF60061708A 0x0000000000000000 0xFFFFFFFF00000000), _get_wpgmptr() + 0x1901 bytes(s)
0x00007FF95CF2F981 (0x000000C2DE18C0E0 0x0000000000000DD0 0x000002A2B8F471C0 0x0000000000000000), _wassert() + 0x71 bytes(s)
0x00007FF600425C1A (0x000000C2DE18BB00 0x0000001000000000 0x0000008E000000AE 0x0000000000000090)
0x00007FF6004255FC (0x00007FF95CF2F910 0x00000000000000B5 0x0000000000000000 0x00007FF60041F94B)
0x00007FF6004253A3 (0x000000C2DE18D100 0x000002A2B8F4C418 0x0000033200000341 0x0000000000000000)
0x00007FF600420833 (0x000002A2B8F1EA60 0x000000C2DE18E870 0x000000C2DE18CAF8 0x000000C2DE18E870)
0x00007FF60041EBA6 (0x00009994C70BB271 0x000000C200000000 0x0000000000000006 0x0000000000000000)
0x00007FF6003ECFF8 (0x0000000000000003 0x0000000000000002 0x0000000000000000 0x00007FF600388519)
0x00007FF6003F4CAB (0x0000800000000000 0x0000000010000000 0x0000000000000000 0x0000000000000000)
0x00007FF6003EC81C (0x000002A2B8ED2C20 0x0000000000000000 0x000002A2B8EC69BE 0x0000000000000011)
0x00007FF6003DAFFF (0x00000001B8000101 0x0000010000010000 0x0000000500000000 0x0000020000000004)
0x00007FF6003DB8F9 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000)
0x00007FF600353875 (0x000000000000D27A 0x00007FF95F92D754 0x0000000000000000 0x00000000B18D9F08)
0x00007FF6003520F1 (0x0000000000000000 0x00007FF60057186D 0x0000000000000000 0x0000000000000000)
0x00007FF6005717F4 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000)
0x00007FF95EB254E0 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), BaseThreadInitThunk() + 0x10 bytes(s)
0x00007FF95F90485B (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), RtlUserThreadStart() + 0x2B bytes(s)
```

and here is the file on which the command was executed
```
#include "fps_counter.hpp"

namespace gl
{
        void fps_counter::start()
        {
                _thd = std::thread { [ = ]() {
                        _fps_counter_start= std::chrono::system_clock::now();
                        _fps_counter= 0;
                        while (1)
                                {
                                        std::this_thread::sleep_for(std::chrono::seconds(1));
                                        double elapsed =
                                                std::chrono::duration<double>(std::chrono::system_clock::now() - _fps_counter_start).count();
                                        _last_fps_data     = static_cast<double>(_fps_counter) / elapsed;
                                        _fps_counter_start = std::chrono::system_clock::now();
                                        _fps_counter       = 0;

                                        if (_update_cb)
                                                _update_cb(_last_fps_data);
                                }
                } };
        }

        void fps_counter::on_data_update(std::function<void(double)> cb) { _update_cb = cb; }

        void fps_counter::frame() { ++_fps_counter; }

        double fps_counter::last_data() const { return _last_fps_data; }
} // namespace gl
```

Following the `.clang-format` file of mine

```
---
Language:        Cpp
# BasedOnStyle:  LLVM
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignConsecutiveMacros: true
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: true
AlignEscapedNewlines: Right
AlignOperands:   true
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllConstructorInitializersOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: Always
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
  AfterCaseLabel:  false
  AfterClass:      false
  AfterControlStatement: false
  AfterEnum:       false
  AfterFunction:   false
  AfterNamespace:  false
  AfterObjCDeclaration: false
  AfterStruct:     false
  AfterUnion:      false
  AfterExternBlock: false
  BeforeCatch:     false
  BeforeElse:      false
  IndentBraces:    false
  SplitEmptyFunction: true
  SplitEmptyRecord: true
  SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeBraces: GNU
BreakBeforeInheritanceComma: true
BreakBeforeTernaryOperators: false
BreakConstructorInitializers: BeforeComma
BreakInheritanceList: BeforeComma
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: true
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit:     120
CommentPragmas:  '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: false
DeriveLineEnding: false
DerivePointerAlignment: false
DisableFormat:   false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
  - for
  - foreach
  - Q_FOREACH
  - BOOST_FOREACH
IncludeBlocks:   Regroup
IncludeCategories:
  - Regex:           'stdafx\.h'
    Priority:        -3
  - Regex:           'prototypes\.h'
    Priority:        -2
  - Regex:           '<[[:alnum:]_.]+>'
    Priority:        -1
  - Regex:           '.*'
    Priority:        1
    SortPriority:    0
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentCaseLabels: false
IndentGotoLabels: false
IndentPPDirectives: AfterHash
IndentWidth:     4
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd:   ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Left
ReflowComments:  true
SortIncludes:    true
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInParentheses: false
SpacesInSquareBrackets: true
Standard:        Latest
StatementMacros:
  - Q_UNUSED
  - QT_REQUIRE_VERSION
TabWidth:        4
UseCRLF:         false
UseTab:          Never
...

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1Wlt3ozgS_jXOi459uPgCD3kADDPZcSfpOJk-8-Qjg7CZxsCC6CT767ckcRG3JJvJchw7qEpVn0qlqpLgmAav17-TnKCoQPRM0IUUBT4R-B9TNFsrfoyT0zxM8wumcIuyPEpoMVO2M8WC--rDb62iIDmN0gSFOIpJMNMttD9HIcjR3Zm-RcpMc1AIJOQAbbZyityH7zj-dTlk2P8Jeg9rU9OPCt5U7fMsT_8mPoVbjoQ1R0f49gSilfPjHFFSQHfyDScgIV_4WcYUxVFCkK6ZAtz9zrX2LirK4yWiCKNjeUI5ydKcIpqiM6VZwTBpHnyAViyY9kWan-Ae4SRAUeLHZUC4kfwcF2d0BMg0B8ULoWJPoQEF5SVjkniTAiTzPk9POb4gnJ_KC2HWA8NUFqhpHlilgPvd7s9v8HOMknrEle0X5IWgeVrSrKRzAB6DXi5s_nKJ0bygrzEBG3PrzkMcxwxd08zEojkuCgAwZzwJvrD2QKBIM5Kc4gMtaZpHOC6aqQmz4uCnZUKFWZEYFZppuoKUFwWuTRiuFUU3VLxZf25QyovOO8804zP9Z5pdSZjVc83wqWP4WrI2Sv5SBHqrwlz5oeYHxlJS8SNKgvSZCd-_FpRcdA3-Lf2cHnFBFkEcc7Eb1qsjdtkTGwRr9X8Xy3p1xK56YsMNmPCT8xmsfBV_vvMq9Ftc6y_FpWP9050VQ9dbXJsvxOWTI_704jH9MDRaXMYX4sJLHx8_j8tQpXk0vxCXgcMw_HTnoxFWfs_ChPKFuHRjs_psX00J1RaV-oWoNE3dhJ-IPExnEyIYKG0MVEvuxztB_kdaK4GeJ2K0JWJ01WqqluvZqrU0a2CK4mhbVzVsU1OapvpS14MmRRlqMqG00JytCNW9DqrSzAuHJK4RsQM8JtcERUmOowIShgG3oMAGRtVdouMrlDDQWkzg2W5FjG9bK0U6eqsJIK7VjWJYvaa1t3IrPPgIFVAHD0zae3C8amb75lma07p75vGqS54IgHM4EXp4zk6XjOZdK5nKB3CZRgeXsL6juIM52m6bJs3SbMNbblRnbCZrXM-YF7cdTJs3EYEBltrKUa0hItuWXEQdeo3hil_LHSAyR1xWaFp5TtdFhEXU4ajs1bTLVuJUz1zaU5p0Sx-OaasqfZM6S7XORoqua-J3qX5oGXJNLONKmoRY1bXW_QXmGpt-k2N5xgjXuCbVtS0ptJimuXQ2im1rG1WSMZin5vpYaGFBzHU8wDVcO-26lS7tvXnSDWOlmuOawP6W3WoyhjLYpQ6bpoc5OSZDdfrz5G41ZyQK95zEddamPfRydSIFbC0IGR3rqbahyIG5GpDaHcBqoLxRtZzQBJ5mjs7TB031YeuteNUw0LTVNlLYNleeqW03q-XbmmxYh6anGBOaNMUbi9tKz6tWG9VYb__BmEDAxhtLoB821QdTtWtrqyVE96_XBDHfhrrk8ZwTHNwkEX08l8nPbkpS3k5IkJGXxsr-_4B7oPETJCSBb09xLzXB1xBb77hGfLOjjbN0_sMPENIEPZ8j_ywOO9LLhXFBCkRQUfolJcG4QE2vD0lmmiYfHZzZiYwmq2XnD_zQBp3iqn1j1wzmrzQKkCSAVZC6VbTDbDjlXvA50HOA2FFTQQPRiXILIeBDMzYZQJuttrWxur2ZAEnrQSiUpfnnPE3SCg4vYw9-nPo_RUuSPlfw9LfkiqOwAQtYPGaWM9TOAJvPAKv4SCONioMYbgUwJiQ7wF6AecHoCIifJkFRqxzDLT5BWh4BG4lxVhBu4FE2GY2sJyhzzM4FZ7ojJLHzwClM01ZFczQyPZq54A1Tlq_sH-OC8t4BphgaEKr8BJD5Bx-oPXSdGeMLy6sNMKlkgA59jfeM-FAzAtmTRjpFIXOpQ5nBuMnBP477lpAvMRk9g02h2nQ9YQOrC5pk1pbjzcWdJlxRhUH2jrBM_Mp7WFcgVdPEMLmID4mv7xY_NwwQdBt9VH-YsxPRJiywOAqf7rIdk1YtjYE8bj5hOi4TVlpBueSc0DJPUM_AHeHMjPwkGo3EybEo7qVxnD5HyYlHbCAu-uf2Iq6H6BIlpDOErrj5fC7-2UH3Ep8IO6uuLgeieB3oeXYM7pK9OGAGHn4MIZ4D-D4pim9pEIURye_CsCCUscyXFT2OTokVgqnuMpLYOfZ_CgZOkHgcsBnLN9Ev8g37ecoPzmleknEeqyigoTlhn2bcErCOCEljnG7h44wEt-SZPULgHA_R6UwlFgCeYxY6uXV6_R9hkw89Tw4kzjEwMFPwZdVPA-6SW_JCd2xeRhkZcGj1aZqzQiTCcfQfkve6hTguev3uMXNpylhDacRvqtuf05zaLCaBfGsPg4hJzWrFz_i16DM74Ac7fCTxsMOYbK9azGPi4z7zDl-OAf4Q600IRRAllUF7_LfkF4uYPeFpmg1ZO3Zk47Uhn_7kzvrA1-3jayZkpsmQzyaw4Mi3MqbMAcie5iC8mJb7SC5ZDLD7DvkXqexsR8k9LA9LfnIkiarI7Uz36ezp1I8cZxngaB5KIcTH08wcd2KpV02HAFU0y3-EniY0T-PG7j3dFZeblJc2hgzpXhPdrVH6bR0AJ1DeHf92JPONg9jz9VPDGNKfkgbBKN19ga_ErnJ1l0HMuYOpfx5VIOguaxlVcJMEYDw-U7W1O_R9FkfUvWT0VTZVu7Zkjgco6PJgmt4xZssi-S54FM5feXiDeFN0PV3ma_D-dvs0oN4ksKWIKE58woIgnlT3CGbt6-v4L3BOxD_GWtmeq2g7SNp3UUGnGacx9MBOQJClDjtxz_kX_oW9iMSBlSQpbVd4f5AiVOwi6MKev3akOWlcXpJddIkaF1Y1pabxHHOf49MFC_-ZaZvZykU3P_56QhlvZysfGusO4AC08YQ-mvGhQti8g8zBw-RdDv_ck3wkZI53Fh7-IwooXyHLhpdGSclNMsGRZarKHS1g89iUGpLCLUz0L47KTQIR44bk-zRidRnPzSOBahsVGEq46oWCfhhyX8AvItYNx1ZJ0y3EWZ9WgXeo0YteGtOO53_Q42L_3BQ09SqdI7ZTk28IsLUN3w_e3YNrOb-3Tfbd3f6x23wjNuAihYvBPJBTnpZZhw7hipzSPCJdBMBKXqSKD3Fvgkochy-zlbM4N27ESPd5BCLoq9Rhrr8nLMtTmlJIosXHBGrvCYRtAWzs2Ue3cCyyDezwDwu-zbf5Zu4dHep7OhYzzXpPitpS91Be9DiUjvlvim84ShpdTLRmPJKC8j0NFP7LRlunxz4tc590-zV8bAm11VjPLwX5N7D9G-T7-22Ug3fDmuEMPIL9jouzzNSsUnYtOxRWaJCgTlN8HfT0sHC49_Moo9_LlAryjuBfAzKTdXNhr-f0ls8fhGQ8l7FFX1j08Uz48ddd2Pq8pJAvM06xySlK-lZryRA_xKC65JdW12PKdDOmaqqbhS6G39QfTXnKapO6RGNu76dxnZBYKJGYGIKeebWWvGdK-GSAGAhHwqukUTZMIiP1lbXWuycJjumryE_NdklSJzMIYV6UF-BX0n6Cm8Ac8lfxjpF1RRnSuaQdbA3ZHxeijXCJTMjJypiUkZpZMHdY3Re2B3XOwOHXkKsDVJmtrenvkhvYOTwndVarN8RjyWNHwmoz-EBC2E_IgV4yNgsD1fKtK7su8amAkU5vRttpd3juc3DRz10tyy49RT6Ob9Npltpyf5DX50GZKLlP6xgTNZHE28vR03zdkgBKmn4dKzF3yse3GMElibBafzNSDHgfcHIi_NQCMjDb_L0tev_vEosy9ycZ7Lv2YtXz2NDsCnpiKjKHSM-kGMRCzlXVkGNHBqrMdpNYbJs6LuMmaR3kPX037CAkiJi74cm9m8RKIe2wWm-sMK3Z3tc5tKYkBSY6wHkg5dIdwCpoQxYYRyqm74en26e9u5VaHg8P7venmwf38Kf7sL-5uxW0R3zsJK42dz0VxHnYeXLOlwYAVOjaKQik04TFonr1s_quz9Kugms9MHUTX9GIxuTaShBuXo5lz1HoOU-f2UMWkoAlXvnBXYrEaR3CKEh9vt9HzxE9I_ko76rM4-vu26on4CmPCz-9wA17a7X6aV6d1byoKEr2MMhbLVXduDpfqxpZquvQ3yxXur9ablSimOzRPjawcTQV4yrmVcI1K6s0LSHPiItgD3FW26voWlM0TdEVCOCr9VJfrDeKTo4aJj7RlA3WZkuFXMCjm5dor_JrDom9WQvEGEJF-4btFeYBhxCuDuTjkp7T_BrnRcBsfcV1X3Ps_wW3VQgL">