Skip to content
8 changes: 8 additions & 0 deletions clang/bindings/python/clang/cindex.py
Original file line number Diff line number Diff line change
Expand Up @@ -2362,6 +2362,13 @@ def get_bitfield_width(self) -> int:
"""
return conf.lib.clang_getFieldDeclBitWidth(self) # type: ignore [no-any-return]

@cursor_null_guard
def is_function_inlined(self) -> bool:
"""
Check if the function is inlined.
"""
return bool(conf.lib.clang_Cursor_isFunctionInlined(self))

@cursor_null_guard
def has_attrs(self) -> bool:
"""
Expand Down Expand Up @@ -4308,6 +4315,7 @@ def set_property(self, property, value):
("clang_Cursor_isAnonymous", [Cursor], bool),
("clang_Cursor_isAnonymousRecordDecl", [Cursor], bool),
("clang_Cursor_isBitField", [Cursor], bool),
("clang_Cursor_isFunctionInlined", [Cursor], c_uint),
("clang_Location_isInSystemHeader", [SourceLocation], bool),
("clang_PrintingPolicy_dispose", [PrintingPolicy]),
("clang_PrintingPolicy_getProperty", [PrintingPolicy, c_int], c_uint),
Expand Down
15 changes: 15 additions & 0 deletions clang/bindings/python/tests/cindex/test_cursor.py
Original file line number Diff line number Diff line change
Expand Up @@ -784,6 +784,21 @@ def test_storage_class(self):
cursor = get_cursor(tu, "reg")
self.assertEqual(cursor.storage_class, StorageClass.REGISTER)

def test_function_inlined(self):
tu = get_tu(
"""
inline void f_inline(void);
void f_noninline(void);
int d_noninline;
"""
)
cursor = get_cursor(tu, "f_inline")
self.assertEqual(cursor.is_function_inlined(), True)
cursor = get_cursor(tu, "f_noninline")
self.assertEqual(cursor.is_function_inlined(), False)
cursor = get_cursor(tu, "d_noninline")
self.assertEqual(cursor.is_function_inlined(), False)

def test_availability(self):
tu = get_tu("class A { A(A const&) = delete; };", lang="cpp")

Expand Down
1 change: 1 addition & 0 deletions clang/docs/ReleaseNotes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -615,6 +615,7 @@ Sanitizers

Python Binding Changes
----------------------
- Exposed ``clang_Cursor_isFunctionInlined``.
- Exposed ``clang_getCursorLanguage`` via ``Cursor.language``.
- Add all missing ``CursorKind``s, ``TypeKind``s and
``ExceptionSpecificationKind``s from ``Index.h``
Expand Down