diff options
-rw-r--r-- | bindings/python/clang/cindex.py | 10 | ||||
-rw-r--r-- | bindings/python/tests/cindex/test_cursor.py | 16 |
2 files changed, 26 insertions, 0 deletions
diff --git a/bindings/python/clang/cindex.py b/bindings/python/clang/cindex.py index 257b7aeb19..7a637112a2 100644 --- a/bindings/python/clang/cindex.py +++ b/bindings/python/clang/cindex.py @@ -949,6 +949,12 @@ class Cursor(Structure): """ return Cursor_is_def(self) + def is_static_method(self): + """Returns True if the cursor refers to a C++ member function or member + function template that is declared 'static'. + """ + return Cursor_is_static_method(self) + def get_definition(self): """ If the cursor is a reference to a declaration or a declaration of @@ -2176,6 +2182,10 @@ Cursor_is_def = lib.clang_isCursorDefinition Cursor_is_def.argtypes = [Cursor] Cursor_is_def.restype = bool +Cursor_is_static_method = lib.clang_CXXMethod_isStatic +Cursor_is_static_method.argtypes = [Cursor] +Cursor_is_static_method.restype = bool + Cursor_def = lib.clang_getCursorDefinition Cursor_def.argtypes = [Cursor] Cursor_def.restype = Cursor diff --git a/bindings/python/tests/cindex/test_cursor.py b/bindings/python/tests/cindex/test_cursor.py index 9a37d2ff1b..979838b21c 100644 --- a/bindings/python/tests/cindex/test_cursor.py +++ b/bindings/python/tests/cindex/test_cursor.py @@ -102,6 +102,22 @@ def test_canonical(): assert len(cursors) == 3 assert cursors[1].canonical == cursors[2].canonical +def test_is_static_method(): + """Ensure Cursor.is_static_method works.""" + + source = 'class X { static void foo(); void bar(); };' + tu = get_tu(source, lang='cpp') + + cls = get_cursor(tu, 'X') + foo = get_cursor(tu, 'foo') + bar = get_cursor(tu, 'bar') + assert cls is not None + assert foo is not None + assert bar is not None + + assert foo.is_static_method() + assert not bar.is_static_method() + def test_underlying_type(): tu = get_tu('typedef int foo;') typedef = get_cursor(tu, 'foo') |