<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/74846>74846</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Python bindings: Missing enumerations from `TypeKind` can cause exceptions
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Liorst4
</td>
</tr>
</table>
<pre>
Some of the constants in `CXTypeKind` ( `clang/include/clang-c/Index.h`) are missing from `TypeKind` (`clang/bindings/python/clang/cindex.py`)
https://github.com/llvm/llvm-project/blob/4a2a6397f11da7c15a73d19fb1e6c9dcd1ceb5af/clang/bindings/python/clang/cindex.py#L2210-L2211
https://github.com/llvm/llvm-project/blob/4a2a6397f11da7c15a73d19fb1e6c9dcd1ceb5af/clang/include/clang-c/Index.h#L2845-L2854
This can cause an exception in `from_id` when trying to access the `kind` property.
https://github.com/llvm/llvm-project/blob/4a2a6397f11da7c15a73d19fb1e6c9dcd1ceb5af/clang/bindings/python/clang/cindex.py#L681-L685
Example for code that causes an exception:
```python
import tempfile
import clang.cindex
C_HEADER_CONTENT = b'''
_Float16 global;
'''
with tempfile.NamedTemporaryFile(suffix='.h') as c_header:
c_header.write(C_HEADER_CONTENT)
c_header.flush()
cursor = clang.cindex.Index.create().parse(c_header.name).cursor
for child in cursor.get_children():
print(child.kind)
if child.kind == clang.cindex.CursorKind.VAR_DECL:
var_type = child.type
print(var_type.kind)
```
It will crash with `ValueError: Unknown template argument kind 32`
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVUGvozYQ_jXOxQrChgA5cMgmQV01fa226aq3yJgB3DU2ss3m5d9XNrwkb7eq2lOLkEk842--8TdjM2tFpwBKtPmANocVm1yvTXkS2liXrmrd3Mpf9QBYt9j1gLlW1jHlLBYKoyze_36-jfCjUA3KYoxo4Se5ZKpDtBKKy6kBRKsws-aIVh9VA69Rj7IY0S1mBvAgrBWqw63Rg1_9DeATXi1UI1RnEa3Gm-u1ekP2XxGAx9uMjOIDinfz2Ds3WpTsEK0QrTrh-qmOuB4QraT8-vZZj0b_Adz5OFLXiFYpoyxLtnlLSMNyTjYsTxqybWsCGd82vCEc6g1rn1j8M4Y0OVFK4rUfyX_E9O-08fyKdLM-0WKTPvM798JizhTmbLKAmcLwymF0QqulHryIFxG0u_agsDM3r63TmHEO1oYiQln8ZRF4NHoE427R_12wrCDrU1ZsnnkeX9kwSsCtNpjrBrDrmZv3xr7bHJ_LvC6L53cJFibFMGrjsINhbIWE5wiLKTCKZj7P5v3lh-PucPx02f_8cj6-nDFKDrhGNF_e4HSppGaOZLiTumYSJR8WiPdu83gVrr8ziV7YAM0ZPAlmbpUnRws7ta14RckB0dwXSx4a2WJ-6YE1YO7J3meiqxHOL_2W771RMcYP71ZOtved_846GatNSPB5N6K5ZrkBFiIguo1GZqz_fQdUbABvmDEemEG3XsjGF-9sjDpwlzBnQC0c7vksz2iEch7fu0Whkp-Z-ke0-GH1pL_jvQ_h_DkXfd59uhyO-9N3gfzzlZmLu40wZx4w_d_F8Y3Km9d7Nvdqe1b4o8NXISXmhtkeB71RFn9mcoKjMdrLh39TX5S-qlAIkjnAzHTTAMrhkE9CURavmjJptsmWraAkeUzjNM-TfNWXwOIsi9OMFtmm5nm9BZLXbc0L4KTgpF2JksY0ITQuyCamJI9q0hSF9ygKmlGyRWkMAxMy8m0eadOthLUTlHlapNlKshqkDRcWpQquOBgRpf7-MmU4GuqpsyiNpbDOPlCccBLKX0Lr4XvnJzv803IFgZoGMMy3rP3L--hx9t17264mI8t_fWQF0v7YCUn9GQAA__9Jf1TN">