<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJztWltv2zYU_jXOCxGDou4PfrATBy2QokFTbNheDEqibDUyKZCUU-_X75CifEntTE23YSssCLZ4O5fvXEhRzESxnXyW24ovkWg10iuGJKsZVWxE7rxg_BVlkvJ8BS2VQmshuelKeYGgGlVcC0RRLqlajdE7JmFUrCyVjOZPWtKcIarQM6tr80_RhsktUtW6qauyYgVSvGoappEo7ahcFAy9R89mjJBPhtdzpYG7ALEaKYo2Z-MRvh3hqfuNsLu7IglQXlO-vC6FXFONrq-Bo6oE79qP2lwLAjXxGKMRSVZaN2rkA5k7uJfAuc3GuVhDoa43_d81CPKF5XoMHVCOy4LFYYIpzT3iBX4R-ST1aBmEhJHIS3BS5AHLRyQ9LfFxpci-5AeqgJSaKT1e93U-QCekRiP_5k60vKDa6Ebu9oXxauTPD2kz3q7Rh-3c_I3iWVeJUCnEiNz0pYzKg1IO1LSjEd-O_NkhPTA6WtMKuCbmkcolKHcDY7gCOFZUApJTU70ZhbNReAuaH_JF6FAgCprcWu7HTEw_MJMxymH3ynY3ovszW7hxspriiMzs_YKduarSULIDDAF6spO5QAtd8ZbtxOkbDA67il1h__CqVc85p9LbGlgBRDFI88gaKqlmt6yseGVsOatF_mQcEk3rZ7pVhh2Jj1xiqhSTpi8qaVWzwnQGVR8k21SiVR9ltaw4rX9dVTCqgXic8-JjWSqmezC-7fKoqdRdJ-O2YNyy5bllktM6b2sQ8r7ibCYZfXrPO22sH0JPEALtSX2gnC6ZHOdNY1prGIU8H7sYfrifTx_nSLXZGkKJoqxdmjg3Dg4R_33RCMVKqZYpeLAJquJ53UI6sXnFZKh9TnLsQc_8CRXtujFcbBUed-Z-kGIp6dq4cbtmXFsjHBlvRMjefoONR46MtxfApjmTgdV2nYkacbpmqvN-1UqGtqJFK7phyKrcdar-YBK0NG0SPUw_v0MQMMawRmPGN5UU3MiONiYmI3x__8uHxeNvH2Yf79__Pv-0MEOg2kDdCBPK8FBZi-_QQMc6H174K-4uD5chCUhcWNnMWH-qtqp7eJBA2Kr52QAPCu07Sfq8EEqDE4EtI-Me0NdGJpmhyOtE8IaLEJcZesHvsVqCZ78Dd6gZJLhkI6oCslPPBMLOMiGDmZAwLk_p-anlR7zAC5Oei9ez8QezidKyRC-FP0CHEL8jGSCIqQzE0Gy9aCAwDelxsYVKRzIuS5iDPBwwUqCFqpYQAeBvloqbksIBRLIwSbGXEIpfEPGSIIjiwI-TxPMw9gMcBR3Z6JBs7ugdqdvJhv2s8DCimZ3YLGBOu3g4BZyBz0tpx7t8mwyEOy5JmuRd386a3YDu-Ztc1lX_RSLcGd_HTpp0uDRx7H-nNEvGmck-nxiYL2ddxtoLkTpDA8qDZIhYlnjFORlepDiX-YQTRblE6NLfYcA_rmld_wK5Wsj3sAKE-ecMhynnQgONwoBr4hVWNF2GOBigBaTAvnCs-Muuh7Tv7PNn8cT4PftqAivaRVWIe6C8oUBR5rG3AQX2q7d_mJR4ZriV0UEhpNPqn0JzIERemDiEyEB3TgqCg3OcnIoWCAcLTOc5U0f50wtcDHn-QKaB56flOaaQR5kEnm4WYq7trB06OB7NXN-tcr81hYZpZ_mJlcfVUynp1tQemebYb6GaWYPcoJZDYuWs6KbBvy6f4f-qFrC4XU41pNPGzJK6Vd1s2HWBBeoi6R5FwzpXtWY4j838YJmxxyZ1bwOd9fqZPBhuPC9EBctrvW1MfChddNwWC28nwjOVxXmfv9j4VRuDckaepGw6674B4ZOWd0SxpWpu9C3lxaLiG4j7i_HebrzzVM6b5QL2vwN2_wLTLyXCwWmP0PBEvDS0kq9hdrTyeYGLP38lABfmbWghmW4lXzxL2jRmDr75uyWwuwK0VtawjjCsnl9ZsFxc8hL__1-wX8Z_NDz-w1Pxv1j0u299GYJH5Lb2EkNvNevNCaQtrt0L2gXWt707zE8j-4Nz2He_f-ymmh99jzmK5HhoJGMcBoMi-RLDlxj-r8H6c8Zwv22VDI3hqCyKQTG8oXXL-kj-iWDbb-GkbjveSwfuipY5ZvgEeHvofk6g-i8fZOg-e5n5Ob3sUw7OU902fdBvQpOh2_RlTujZ_eD_DrJ_N1Je6vZeycDdej-My-jsbv0OppNyuu9dceI268nAzXo_jOIwsUdK-s-lxFEIULGtC3Tq2lPw4jSJg5JBvqHuA2IQOQpT-01RS2q-8KPo5LGMq2LiF6mf0iva6pWQE8nW2y8MIL1qZT15-ymE0I-C4Go1STM_yCOahnlGM4-laZbFSQgZMoowyUh2VdOM1WpijssQwtkzsiTgeRTeXv24BNWEYAI3jokfBiQZpxAROI9xnkWhzwCrADOAvx4bOmMhl1dyYklm7VJBY10prfaNVNn4ZpPufM-VrnRtC4fmhgZ0Y09dPK8YR-XOVxHl6GNmJK027NodGNErcJBWMWUPByl7fgMMNOBQRYSvrLoTq-ufItvdpQ>53644</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang-format] Crash when formatting an Objective-C file that uses enums and `SeparateDefinitionBlocks: Always`
        </td>
    </tr>

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

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

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

<pre>
    Trying out the release/14.x branch this morning and ran into a crash. Here's the backtrace as well as a very simplified snippet of the code I was working with to reproduce.

```
$ clang-format --version
clang-format version 14.0.0 (https://github.com/llvm/llvm-project.git c0fde7580aac12143d63291af452e261808dc4ec)
```

```objc
$ cat test.m
#import <Foundation/Foundation.h>

enum MyEnum {
  foo,
  bar,
  count
};

int main(int argc, const char * argv[]) {
    enum MyEnum a = bar;

    for (enum MyEnum i = foo; i < count; i++) {
        if (i <= a) {
            continue;
        }
    }
}
```

```
$ clang-format -style='{SeparateDefinitionBlocks: Always}' test.m
Assertion failed: (PreviousOriginalWhitespaceEndOffset <= OriginalWhitespaceStartOffset), function calculateLineBreakInformation, file WhitespaceManager.cpp, line 130.
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={SeparateDefinitionBlocks: Always}" test.m
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  clang-format             0x000000010f52427d llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 61
1  clang-format             0x000000010f5247fb PrintStackTraceSignalHandler(void*) + 27
2  clang-format             0x000000010f52257f llvm::sys::RunSignalHandlers() + 127
3  clang-format             0x000000010f5269ff SignalHandler(int) + 223
4  libsystem_platform.dylib 0x00007ff808104e2d _sigtramp + 29
5  libsystem_platform.dylib 0x00007fb5890182a0 _sigtramp + 18446743788110034064
6  libsystem_c.dylib        0x00007ff80803bd10 abort + 123
7  libsystem_c.dylib        0x00007ff80803b0be err + 0
8  clang-format             0x000000010f7f298c clang::format::WhitespaceManager::calculateLineBreakInformation() + 300
9  clang-format             0x000000010f7f2773 clang::format::WhitespaceManager::generateReplacements() + 99
10 clang-format             0x000000010f6eb81d clang::format::DefinitionBlockSeparator::separateBlocks(llvm::SmallVectorImpl<clang::format::AnnotatedLine*>&, clang::tooling::Replacements&, clang::format::FormatTokenLexer&) + 2509
11 clang-format             0x000000010f6eae1e clang::format::DefinitionBlockSeparator::analyze(clang::format::TokenAnnotator&, llvm::SmallVectorImpl<clang::format::AnnotatedLine*>&, clang::format::FormatTokenLexer&) + 158
12 clang-format             0x000000010f78d204 clang::format::TokenAnalyzer::process() + 1140
13 clang-format             0x000000010f74139f clang::format::internal::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, unsigned int, unsigned int, unsigned int, llvm::StringRef, clang::format::FormattingAttemptStatus*)::$_8::operator()(clang::format::Environment const&) const + 111
14 clang-format             0x000000010f741315 decltype(std::__1::forward<clang::format::internal::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, unsigned int, unsigned int, unsigned int, llvm::StringRef, clang::format::FormattingAttemptStatus*)::$_8&>(fp)(std::__1::forward<clang::format::Environment const&>(fp0))) std::__1::__invoke<clang::format::internal::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, unsigned int, unsigned int, unsigned int, llvm::StringRef, clang::format::FormattingAttemptStatus*)::$_8&, clang::format::Environment const&>(clang::format::internal::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, unsigned int, unsigned int, unsigned int, llvm::StringRef, clang::format::FormattingAttemptStatus*)::$_8&, clang::format::Environment const&) + 69
15 clang-format             0x000000010f7412a5 std::__1::pair<clang::tooling::Replacements, unsigned int> std::__1::__invoke_void_return_wrapper<std::__1::pair<clang::tooling::Replacements, unsigned int>, false>::__call<clang::format::internal::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, unsigned int, unsigned int, unsigned int, llvm::StringRef, clang::format::FormattingAttemptStatus*)::$_8&, clang::format::Environment const&>(clang::format::internal::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, unsigned int, unsigned int, unsigned int, llvm::StringRef, clang::format::FormattingAttemptStatus*)::$_8&, clang::format::Environment const&) + 69
16 clang-format             0x000000010f741255 std::__1::__function::__alloc_func<clang::format::internal::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, unsigned int, unsigned int, unsigned int, llvm::StringRef, clang::format::FormattingAttemptStatus*)::$_8, std::__1::allocator<clang::format::internal::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, unsigned int, unsigned int, unsigned int, llvm::StringRef, clang::format::FormattingAttemptStatus*)::$_8>, std::__1::pair<clang::tooling::Replacements, unsigned int> (clang::format::Environment const&)>::operator()(clang::format::Environment const&) + 69
17 clang-format             0x000000010f740054 std::__1::__function::__func<clang::format::internal::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, unsigned int, unsigned int, unsigned int, llvm::StringRef, clang::format::FormattingAttemptStatus*)::$_8, std::__1::allocator<clang::format::internal::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, unsigned int, unsigned int, unsigned int, llvm::StringRef, clang::format::FormattingAttemptStatus*)::$_8>, std::__1::pair<clang::tooling::Replacements, unsigned int> (clang::format::Environment const&)>::operator()(clang::format::Environment const&) + 68
18 clang-format             0x000000010f746fdd std::__1::__function::__value_func<std::__1::pair<clang::tooling::Replacements, unsigned int> (clang::format::Environment const&)>::operator()(clang::format::Environment const&) const + 93
19 clang-format             0x000000010f6fc0e0 std::__1::function<std::__1::pair<clang::tooling::Replacements, unsigned int> (clang::format::Environment const&)>::operator()(clang::format::Environment const&) const + 64
20 clang-format             0x000000010f6fb3ca clang::format::internal::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, unsigned int, unsigned int, unsigned int, llvm::StringRef, clang::format::FormattingAttemptStatus*) + 2458
21 clang-format             0x000000010f6fc2af clang::format::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, llvm::StringRef, clang::format::FormattingAttemptStatus*) + 191
22 clang-format             0x000000010f357f64 clang::format::format(llvm::StringRef) + 3780
23 clang-format             0x000000010f356758 main + 1272
24 dyld                     0x00000001179874fe start + 462
Abort trap: 6
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWltv2zgW_jXOCxGDou4PfrATBy2QokFTzGD3xaAkylYjkwJJ2fX8-j2kKF9SO6NmZhezhQ0hESnyXL5zvkOJUiaK3eSr3FV8iUSrkV4xJFnNqGIj8uAF4-8ok5TnK7hSKbQWkpuhlBcIulHFtUAU5ZKq1Rh9YBJmxcpKyWj-oiXNGaIKbVldm_8UbZjcIVWtm7oqK1YgxaumYRqJ0s7KRcHQR7Q1c4R8Mbq2lQbtAsxqpCjanI1H-H6Ep-5vhN3RNUmA8pry5W0p5JpqdHsLGlUleHf95Jq7gsBNPMZoRJKV1o0a-SDmAY4laG6zcS7W0KjrTf_vFgz5xnI9hgEox2XB4jDBlOYe8QK_iHySerQMQsJI5CU4KfKA5SOSnrf4tFNk3_IjV8BKzZQer_s-H6ATUqORf_cgWl5QbXwjD4fGeDXy58eyGW_X6NNubv6N4lnXiVApxIjc9a2MyqNWDtK0kxHfj_zZsTwIOlrTCrQm5pTKJTh3B3O4AjhWVAKSU9O9GYWzUXgPnh_rRejYIAqe3Fvtp0rMOAiTCcrx8MoON6b7M9u4c7aa5ojM7PFKnflVpZFkJxgB9Owg8wMvdMVbtjenv2Bw2HfsG4eTN6N6KTmV3tWgCiCKwZpn1lBJNbtnZcUrE8tZLfIXk5BoWm_pThl1JD5JialSTJqxqKRVzQozGFx9kmxTiVZ9ltWy4rT-fVXBrAb4OOfF57JUTPdg_DjkWVOpu0EmbSG4ZctzqySndd7WYORjxdlMMvrykXfe2DyEkWAEOoj6RDldMjnOm8ZcrWEW8nzsOPz0OJ8-z5FqszVQiaKsXRqemwQHxv8cG6FZKdUyBSe2QFU8r1soJ7aumAp1qElOPfiZv6CiXTdGi-3C4y7cT1IsJV2bNG7XjGsbhJPgjQg5xG9w8MhJ8A4G2DJnKrDarTNRI07XTHXZr1rJ0E60aEU3DFmXu0HVH0yCl-aaRE_Trx8QEMYE1njM-KaSghvb0cZwMsKPj799Wjz_69Ps8-PHf8-_LMwU6DZQN8JQGU4qG_E9GujU5-Mf_o67n4fLkAQkLqxtZq4_VTvVnTxJEGzd_GqAB4cOgyTdLoTSkEQQy8ikB4y1zCQzFHmdCd5wE-IyQ6_0PVdLyOwPkA41gwKXbERVQHXqlQDtrBIyWAkJ4_Kcn19afqILsjDptXi9Gn-wmigtS_Ta-CN0CPE7kQECTmVghmbrRQPENKLHxQ46nci4LGEN8nDASIEWqloCAyDfrBS3JIUDhGRhkmIvIRS_EuIlQRDFgR8niedh7Ac4Cjqx0bHY3Mk7cbezDftZ4WFEM7uwWcCcd_FwCTiDnJfSznf1NhkId1ySNMm7sV00uwnd-Q-1rOv-k0K4D76PnTXpcGvi2P9Ja5aMM1N9vjAIX866inUwInWBBpQH2RCxLPGKSza8KnGu8glninKF0JW_Y8I_r2ld_wa1WsiPcAcI688FDVPOhQYZhQHX8BXuaLoKcTRBCyiBfePU8ddDj2U_2POv4oXxR_bdECvasyrEPVDeUKAo89j7gIL41bs_TEm8MN3a6KAQ0nn130JzIERemDiEyMB0TgqCg0uanIsWCAcLLOc5Uyf10wschzx_oNLA89PyklKoo0yCTrcKMXftYhw6OJ7NWt_d5f4YCg3LzvILK0-7p1LSnek9Cc1p3kI3swG5Qy2HwspZ0S2Df96-oP9NL-DmdjnVUE4bs0rqVnWrYTcEblAXSXcqGtalqg3DZWzmR7cZB2xS9zTQRa9fyYPhwfNCVLC81rvG8EPpotO2WHh7E7ZUFpdz_hrjN2MMzhl7krLpovsOhM9G3gnFVqo50I-SF4uKb4D31-C9P3iXpVwOyxXs_w3Y_QNMfysRDi57hIZn-NLQSr6F2cmdzytc_PkbBFyYp6GFZLqVfLGVtGnMGnz3d1tgdwVorWxgnWC4e37jhuWaklf-__-C_Zr_0XD-h-f4v1j0u299G8gjctt75dB7w3p3BmmLa_eAdoX1fc8O8_PI_sU17KefP_ZLzV99jjlhcjyUyRiHwSAmXzl85fA_DdZfk8P9tlUylMNRWRSDOLyhdct6Jv9CsB22cFK3He-lA3dFyxwzfAa8A3S_JlD9mw8ydJ-9zPycXvcpB9epbps-6DehydBt-jIn9OJ-8D8H2b8bKS91e69k4G69H8ZldHG3fg_TWTvd-644cZv1ZOBmvR9GcZjYT0r616XESQhQsasLdO53kODFaRIHJYN6Q90LxCByEqb2naKW1LzhR9HZzzJuiolfpH5Kb3SlazYZhbNju0fhPbqznw9sV4yjcg86ohx9zsynB9WG3bovH_QKPG0VU_YrF2U_RABNA74OiPBNK-vJ-z96CP0oCG5Wk6zM0oD4fhrEaR4HfhqFSeLFEQkyGpQpualpxmpl_BwRwtkWWRFwDq7eVBOCCRw4Jn4YkGScAn1wHuM8i0KfAbABZhCremzsGAu5vJETa1LWLhVcrCul1eEiVbYYWFiNfNrqlZATyda7bwzS9sYqn1jj_wP0ZMcy">