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

    <tr>
        <th>Summary</th>
        <td>
            clang-format crashes on lambda with `noexcept` and trailing return type
        </td>
    </tr>

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

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

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

<pre>
    ```
C:\bug>type clang-format-crash.cpp
void f()
{
        foo([]() noexcept -> int { });
}
C:\bug>clang-format --version
clang-format version 15.0.0 (https://github.com/llvm/llvm-project.git c8b675eaa1de1d4edebd0292ca6de3180c687127)

C:\bug>clang-format -style=LLVM clang-format-crash.cpp
Assertion failed: (!TypeIsFinalized || T == Type) && "Please use overwriteFixedType to change a fixed type.", file C:\Users\adam\Documents\GitHub\llvm-project\clang\lib\Format\FormatToken.h, line 354
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: clang-format -style=LLVM clang-format-crash.cpp
0x00007FF63657AF5C (0x0000007500000016 0x0000000000000000 0x00007FF63645AD8F 0x0000000000000000), HandleAbort() + 0xC bytes(s), C:\Users\adam\Documents\GitHub\llvm-project\llvm\lib\Support\Windows\Signals.inc, line 418
0x00007FFA170E8E05 (0x00007FFA00000016 0x000000751DF88DA0 0x0000000801000006 0xFFFFFF0100000190), raise() + 0x475 bytes(s)
0x00007FFA170EAB29 (0x000000751DF88DA0 0x0000000000000240 0x00007FFA171FC170 0x00007FF636CB9320), abort() + 0x39 bytes(s)
0x00007FFA170F1025 (0x00007FF636CB9320 0x00007FF636CB9170 0x0000007500000162 0x00007FF636737632), _get_wide_winmain_command_line() + 0x2895 bytes(s)
0x00007FFA170F08B7 (0x00007FF636CB9320 0x00007FF636CB9170 0x0000000000000162 0xCC00000000000057), _get_wide_winmain_command_line() + 0x2127 bytes(s)
0x00007FFA170EE881 (0x00007FF636CB9320 0x00007FF636CB9170 0xCCCCCCCC00000162 0x00007FF636767DE8), _get_wide_winmain_command_line() + 0xF1 bytes(s)
0x00007FFA170F158F (0x00007FF636CB9320 0x00007FF636CB9170 0xCCCCCCCC00000162 0xCCCCCCCCCCCCCCCC), _wassert() + 0x2F bytes(s)
0x00007FF636767DE8 (0x000001CE2D25CED0 0x00007FF63673005E 0x000001CE2D25C908 0x00007FF636730037), clang::format::FormatToken::setType() + 0x58 bytes(s), C:\Users\adam\Documents\GitHub\llvm-project\clang\lib\Format\FormatToken.h, line 353 + 0x4A byte(s)
0x00007FF63674FC21 (0x000000751DF896E8 0x000001CE2D250041 0x000001CE2D25003D 0x00007FF600000037), clang::format::`anonymous namespace'::AnnotatingParser::consumeToken() + 0x14F1 bytes(s), C:\Users\adam\Documents\GitHub\llvm-project\clang\lib\Format\TokenAnnotator.cpp, line 1194
0x00007FF63674CC81 (0x000000751DF896E8 0x000001CE2D250000 0x000001CE2D257C18 0x00007FF63668E668), clang::format::`anonymous namespace'::AnnotatingParser::parseParens() + 0x1291 bytes(s), C:\Users\adam\Documents\GitHub\llvm-project\clang\lib\Format\TokenAnnotator.cpp, line 454 + 0xD byte(s)
0x00007FF63674F2F3 (0x000000751DF896E8 0x00007FF636740099 0x000000751DF896E8 0x000000751DF89660), clang::format::`anonymous namespace'::AnnotatingParser::consumeToken() + 0xBC3 bytes(s), C:\Users\adam\Documents\GitHub\llvm-project\clang\lib\Format\TokenAnnotator.cpp, line 1044 + 0xF byte(s)
0x00007FF6367507DE (0x000000751DF896E8 0x000000751DF8B228 0x000001CE2D25E7A0 0x000000751DF8A280), clang::format::`anonymous namespace'::AnnotatingParser::parseLine() + 0x39E bytes(s), C:\Users\adam\Documents\GitHub\llvm-project\clang\lib\Format\TokenAnnotator.cpp, line 1403 + 0xA byte(s)
0x00007FF6367417CC (0x000000751DF8AF28 0x000001CE2D25E7A0 0x000000751DF8A280 0x00007FFA00000000), clang::format::TokenAnnotator::annotate() + 0xDC bytes(s), C:\Users\adam\Documents\GitHub\llvm-project\clang\lib\Format\TokenAnnotator.cpp, line 2566 + 0xA byte(s)
0x00007FF636798C37 (0x000000751DF8B220 0x000000751DF8D378 0x000000751DF8BF90 0x000001CE2D1F0000), clang::format::TokenAnalyzer::process() + 0x4B7 bytes(s), C:\Users\adam\Documents\GitHub\llvm-project\clang\lib\Format\TokenAnalyzer.cpp, line 125
0x00007FF6366EE346 (0x000000751DF8D090 0x000000751DF8D378 0x000001CE2D215AD0 0x00007FF63671E155), <lambda_290b11b35eddd7af5df7451a0804f0f2>::operator()() + 0x56 bytes(s), C:\Users\adam\Documents\GitHub\llvm-project\clang\lib\Format\Format.cpp, line 3242 + 0x2D byte(s)
0x00007FF6367108C8 (0x000000751DF8D378 0x000000751DF8D090 0x000001CE2D215AD0 0x00007FF63672DC64), std::invoke<<lambda_290b11b35eddd7af5df7451a0804f0f2> &,clang::format::Environment const &>() + 0x28 bytes(s), C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\type_traits, line 1488 + 0x14 byte(s)
0x00007FF6366FC098 (0x000000751DF8D378 0x000000751DF8D090 0x000001CE2D215AD0 0xCCCCCCCCCCCCCC00), std::_Invoker_ret<std::pair<clang::tooling::Replacements,unsigned int>,0>::_Call<<lambda_290b11b35eddd7af5df7451a0804f0f2> &,clang::format::Environment const &>() + 0x28 bytes(s), C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\functional, line 673 + 0x14 byte(s)
0x00007FF6366EF9C7 (0x000000751DF8D088 0x000000751DF8D378 0x000001CE2D215AD0 0x000000751DF8BF20), std::_Func_impl_no_alloc<<lambda_290b11b35eddd7af5df7451a0804f0f2>,std::pair<clang::tooling::Replacements,unsigned int>,clang::format::Environment const &>::_Do_call() + 0x37 bytes(s), C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\functional, line 833 + 0x23 byte(s)
0x00007FF63672B8B5 (0x000000751DF8D088 0x000000751DF8D378 0x000001CE2D215AD0 0x000000751DF8D6E0), std::_Func_class<std::pair<clang::tooling::Replacements,unsigned int>,clang::format::Environment const &>::operator()() + 0x65 bytes(s), C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\functional, line 880 + 0x2C byte(s)
0x00007FF6366E4005 (0x000000751DF8D7F0 0x000000751DF8DA18 0x000000751DF8D810 0x000000751DF8D820), clang::format::internal::reformat() + 0xAE5 bytes(s), C:\Users\adam\Documents\GitHub\llvm-project\clang\lib\Format\Format.cpp, line 3280
0x00007FF6366E10E9 (0x000000751DF8E0D8 0x000000751DF8DA18 0x000000751DF8F640 0x000000751DF8F650), clang::format::reformat() + 0xB9 bytes(s), C:\Users\adam\Documents\GitHub\llvm-project\clang\lib\Format\Format.cpp, line 3305 + 0x9C byte(s)
0x00007FF63649AEC5 (0x000000751DF8FB50 0x000001CE2D206080 0x000000751DF8FB30 0x0000000000000000), clang::format::format() + 0x11C5 bytes(s), C:\Users\adam\Documents\GitHub\llvm-project\clang\tools\clang-format\ClangFormat.cpp, line 481
0x00007FF63649C218 (0x0000000000000003 0x000001CE2D1F07B0 0x0000000000000000 0x00007FF636991D5D), main() + 0x5F8 bytes(s), C:\Users\adam\Documents\GitHub\llvm-project\clang\tools\clang-format\ClangFormat.cpp, line 614 + 0x56 byte(s)
0x00007FF636992859 (0x00007FF636B5E000 0x00007FF636B5E598 0x0000000000000000 0x0000000000000000), invoke_main() + 0x39 bytes(s), D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl, line 79
0x00007FF63699273E (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), __scrt_common_main_seh() + 0x12E bytes(s), D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl, line 288 + 0x5 byte(s)
0x00007FF6369925FE (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), __scrt_common_main() + 0xE bytes(s), D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl, line 331
0x00007FF6369928EE (0x000000751D467000 0x0000000000000000 0x0000000000000000 0x0000000000000000), mainCRTStartup() + 0xE bytes(s), D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp, line 17
0x00007FFA96877034 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), BaseThreadInitThunk() + 0x14 bytes(s)
0x00007FFA96F82651 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), RtlUserThreadStart() + 0x21 bytes(s)
```

Works fine with:
```
void f()
{
        foo([]() -> int { });
}
```
and
```
void f()
{
        foo([]() noexcept { });
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzlmlmPo7gWxz9N6sWqyDYYzEMeCMudlnqkVldN92NkwEm4TSBiqeqaT3-PWZKwJKmqqWWki0gAY-zj3_94hSCLnhYzA7c7dmfYdmaaPWNOUG1mmlc-7SUKE5FubtdZvhPlbZiLYjsP9_sm9kMWR2g9o3xGrSZkZi6bE9Ru6yxT99lyxtwmIkoz-TuU-xLdQh4oTksET8HPValoyy4hd8KiU2PQ7e2DzIs4S5uIvXvtHUTYHM8xgpy3ZbkvVFrUh30Tl9sqmIfZDi6S5KE73O7z7L8yLOcQAYU8MEwmhSCRJJEuIxlEmFo0FEYkNcJxaHCTUPNY-msWF-VTImea-_Xrjz8vkrWLQualKsFaxImMIElU4yP3IMqXwo9TkcR_ywi4ObCjewTJwo7UfUV5Rg3Y4UC_JVIUElXwy4DLYx6X0o9_y0hFRWWGwi0YIpFAaxWKlOxzeG5GHQhJJGoL9BeYVMBRRGIHBzcLq51MSxX0n7j8owrg5JQhXNZFVMGxuunXRT2c3Ge_ZDrfqmySOJVIY3pT-G9fPfvOQ0UV7EAFgYAkyuU-y0tl7cuEhMu4KCpZwAkSaQT-FiZVBOXegm8r6CgQ4a8yFyEUus7-roQAFFW7vcqlDsLzxpu_5dkmFzsk8k1bdtDllRLj3xg20_cNzWCm7TNHKdyEQjhrjsRAXdBxQ6fP6sx2uT8RS7klsP0DSp1IOwB8bQWc0SVEd1DwVCouvGhjvl7nGnwn8121V1rB2c84jbJH9eBdvAGHLeZA_6C3TviAhE1M7HEPsyMJFToiYTLi-py7Nj4Wm2NSH1Usv97aAGJ1JHIRF7LHQDdZn8KEPfayjs4vZd5sVD9RBp4lvgMJ9MRylpZGO3vESBPNumaOTzDt4zmkOszomPfBnYhBe7FMzTQ02pqz2shy9RhHEv7SnYjTFdSqHXjPSsnVs5Ny6yo4H_Ol-XJLMT6x1HFOw5j5Ckuhfb4qscc5eYmlTrtNMzVM1-Mvt9Qn17VnUNH_mZ3OYOvsfBR1j9Nn51-y6FDUk8pBHI-6lDmeiwd-Bup5aBDLwnwUS-s0broOaJA0u2k_m_OTrqMJKGTZdHknhjP-hm3bC_swrWta7NqG8-x036Fk3LBYhscHoDDWySgIuvpjck0C19jBKE-kWfq0y6oCpWIniz30ejMYwNS37TTNSlHG6eabyIFTExpmaQGMGuKnkIk-9Nj3wFzn21qW5XXv2bEmxNKnuDoOfy7XQ1faBZkO6fukwT34vQPXvTqHAJkWfazU-lysOtNbU9yrHkx97SLpLiLGloXO63EIMvBHevDS0T7XgbHeofavoGYYWtrLTt0GLSkd-rln2ngQy4aU3supvw57Ns3yPpezjrtW-WqjTEzHGXO2_edCPRkAdsOWy5z7djdhornsU3TfcsD-coiUGcYzIVrc0cwxRPDMITFXM0f-61v9Rpn4z4Yokqe_D66YZ6Es-m2rvjQ_jGFjS98PKRvTMjxP040xLRdbl2g1Xkhg7jcYaRGPMNaWbaY5idgFkVhRCweEBBqTURSZYs2itakzImDapK_xms40r8GW7WVeO2KzqNMbVRkfNarqUdOoTrsB6bUeiWDu8AmWYzc7xXuWJXUdQ2-LWpRRQyhOH0BhQPsius16jHPGf730Ic6zVEFDqrsq6-igSX_SdY5_tyzhx4lU0P-MwzwrsnWJfsRFJRJ0V1ZRnMEdiimFgwOTkCqNyyc4_-HUTpsl9ZN39SXR5xqda0QDK5jTLpnAmVoaWpUwjwZtj60r54ch4WV9DN_B1j_Vpz9_ObQMB31WX2qB8lUuga5zCN-LGJqGUwVKKHTcXXyX-wQ6uMZvqVOlRbxJpVovKmshHHyoIytHJMn_pwOsqzRUy5IiOegP07bnyu_5ljPRMbiYj-S_2NQd-wo6lt8HE1fxbp-s0mwFQmXhS6WC9N7Ma16qd1MGN1uFysd6o6izfddnqs-1Tn2qXWmc6ZIv2Ruq7xreGfUBOvT8b1j3X6Xiha7UYP9KLTnutHSu1WSY0k1pafojlWwykpeTUSxOrwzxQAuZK2vrq1y2906p2t5ZrO88QuF4ihHB3sTKsYfdEZAxI9_Qh4x8g11hNEllaX0OFK12EGWBdcWbdMv2nAlv8pdsMAbABuYjLEtttHqMr00YJjgR4ryH-5RtdTx9FaSqrbqcwKZzMgXIoaQ3bjps2nCuZC6naPTGtZZFXOa2JVSL0v1hvv8eq6cvxGAQvT_rOOs8lkU5O6lmTeiSecNSQxCz-Hk2E87TDPVXI0TD1zQQ1W0ICfitHrP8l2p54aeKXOQh_D-EBwT1u7GHsChFXlb7Q4zjtfwt6_cEWTqP02P7bE4X39S8Sde44AfPK_5qVYCtrSU1hVUht4PVyvHSzkegoIc5B7vqHsz_MD49Np9DRtMmGhBVSbzR-qFumG9AQZXb-X5_1xr2wQRU7v1FFnP45swyuGliTX8fJ1iKQt5vcymiLzAKu99W6a_Ba5KLr_Usw-fUYOR9jPteJqrNbuyrFRq8HJ2wbfBFUPP_E7Qq0FoBfozL7az7MGIQ-XUfBD3rO6BBTiKN3tCCwydJz7LgJlpokaVZ4qaMy0Queh-A1F95yAJlKWpmnDUwBI91mcBp_SWKWkdRcxCUy7LK0_q7m5sqTxav_8KFMYOym-3C1HlAcWgZAdPNwIiYxoKAR0IzrUhfG-ubRAQyKRYKAqWpfER1EuqjH-bexAs1t8CMEmJinZI5ZyGPAs71kAaEUTnTsYSKl8yVHfMs39zki9qkoNoUcDOJi7I43oTJmJpPyUXD_EZU5TbLFzaMIpZVGGf5TZ37orb-f2GstuU">