<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/149960>149960</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-format] unwanted space added between an identifier named 'import' and a open angle bracket
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-format
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
RoyAwesome
</td>
</tr>
</table>
<pre>
Using clang-format version 20.1.8
I have a template function named `import` and clang-format keeps inserting an unwanted space between the identifier and the template params.
```cpp
_world->component<engine_info_t>(); // normal template params are formatted correctly
_world->import <engine_module>(); // Unwanted space after import but before <
```
I haven't found any other case where this extra space is inserted. I suspect it's because `import` is a contextual keyword related to cpp20 modules and clang-format is not understanding this isn't a module import.
I can't attach my .clang-format so here it is:
```
Language: Cpp
BasedOnStyle: Microsoft
DerivePointerAlignment: false
PointerAlignment: Left
ReferenceAlignment: Left
IndentWidth: 4
BreakTemplateDeclarations: Yes
BreakBeforeConceptDeclarations: Always
SpaceAfterTemplateKeyword: false
RequiresExpressionIndentation: OuterScope
IndentRequiresClause: true
NamespaceIndentation: All
FixNamespaceComments: false
SpaceBeforeParens: Never
SpacesInAngles: Never
AllowShortFunctionsOnASingleLine: Inline
PackConstructorInitializers: Never
BreakConstructorInitializers: BeforeComma
AllowShortCaseLabelsOnASingleLine: true
IndentCaseLabels: true
InsertBraces: true
IndentAccessModifiers: false
SpaceBeforeCpp11BracedList: true
AlignArrayOfStructures: Left
AllowShortLambdasOnASingleLine: All
BreakBeforeBraces: Custom
BraceWrapping:
BeforeLambdaBody: false
AfterFunction: true
SortIncludes: CaseInsensitive
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx8Vd1u2zgTfRr6ZhBDlv-qC18oTg0YX9oU9VcUe1WMyZHMDUVqyZEd79MvSMmJnXQXCBBD83fOzOEMhqBrS7QS83sxfxhhxwfnV9_duTxRcA2N9k6dVz-CtjVIg7a-q5xvkOFIPmhnIc_Gk_EnkZUiK7dwwCMBAlPTGmSCqrOSo5vFhhSIRaab1nkWiwzQqtuUz0RtAG0DeY710EJnT2iZFIQWJcGe-ERkgQ8EWpFlXWnyKVP89Fq2RY9NGAP0uMQi6_9k24qshF8n5426E9PP0jWts2RZTNdka23pl7aV-8Vi-lnkn0ReiOk9iHwj8g3YCNO8rwLoCXoGEah03pNkc4613wr1tOGtTONUZ-h3ZX7ccsaKycMQv-8Y9lQ5TzHVNbXrCViRLxkq11kFaM_g-EAeJAaC04E8AR90AHphj0MRfek7qTHAFkIXWpIMmkW-DLAniV2g2_npAAjSWaYX7tDAM51PzivwFLujgB3Its0z6KmGjwPXAaxj6KwiHxitilNP2HToOeAQPPAfD_OMRCUOLswoD9CcYXyTPDhIXHWsI6blOymIrHxEW3dYk5iWsE7KuMdA6snu-GzS1y9aehdcxSIrH8jrI31z2jL50ujaNkk3JVRoAoms_J3tkVLwd6rIk5X0O-PWRin_1IoP8essAvGEz_8fhPZA0qDH-I4iEfiDwsXlPmlh7ayklt_7leaE5-i6izMuo44uKf_Xz-oa_Xf6q9OewueX1lOIb7vHlfJFx6eOye-ka-kV8yVmbaI8ohP7Lpq_YkNJWe9ylMaIrNzol1eHtWtiO8I1lIS3p_YNPfVsvtKR_MUYtra0taEbS2mMO-0OzvNmWDvhyZY7HR0ftU34ttbEX1n5DeXz2tnAvpPs_NZq1mj03-RvcqYu_4ffZQBNgzcI1hjoEfdkPkIYWtR35s3vxhSf4r2PRD9ElFJSCF-cSrvv3_q2btvJJGVQjzrwVZakwNJ7PD9Vu8Sq832ZQY5vJB6x2Sv8yKCf4pUA36Cuu8CuSVaU9NNj22pb988Phm71ae-dOl-DB0gKvYzuCvHOed5aaTo11MBAsUU2aNZHun7VI7WaqmJa4IhWk-V8Opkvi2w6OqxwNivmWUVVNlnMZrNptSRcLIq9LIosK2Q-0qs8y-fZMs-z2eRTPh0XOc33c8KJLOZyms3FLKMGtRkbc2zGztcjHUJHq8msKBbZyKQhpjua59eLSOR5vKx-FePu9l0dxCwzOnB4y8SaTbrBN4Hzh_f3D5Ui9XoF0V4fweHC5sthQ-fLtHARXJt8a0Ow9yifiUedN6sDc5v2Yro6teZDtx9L14h8E3EN_-5a7_4kySLfJLpB5JuB8XGV_xMAAP__mNrOZw">