Closed
Description
[BUG] Missing TypeKind for _Float16 (CXType_Float16 = 32) in Python bindings
Summary
When using Clang Python bindings (clang.cindex
) with libclang
19.1.7, accessing .type.kind
for a variable of type _Float16
crashes with:
ValueError: 32 is not a valid TypeKind
This is because CXType_Float16 = 32
is defined in clang/include/clang-c/Index.h
but missing in the Python TypeKind
enum in cindex.py
.
Repro
// test.c
_Float16 f;
from clang import cindex
tu = cindex.Index.create().parse("test.c", args=["-x", "c"])
for c in tu.cursor.walk_preorder():
print(c.type.spelling) # "_Float16"
print(c.type.kind) # 💥 raises ValueError: 32 is not a valid TypeKind
Expected
No crash; .type.kind
should return a valid enum like TypeKind.FLOAT16
.
Fix
Add to clang/cindex.py
:
FLOAT16 = 32
Environment
- libclang: 19.1.7
- Python: 3.13
- OS: macOS
- Python bindings: from LLVM Homebrew package or PyPI