r330557 - [python bindings] Fix Cursor.result_type for ObjC method declarations - Bug 36677

Jonathan Coe via cfe-commits cfe-commits at lists.llvm.org
Sun Apr 22 13:51:05 PDT 2018


Author: jbcoe
Date: Sun Apr 22 13:51:05 2018
New Revision: 330557

URL: http://llvm.org/viewvc/llvm-project?rev=330557&view=rev
Log:
[python bindings] Fix Cursor.result_type for ObjC method declarations - Bug 36677

Summary:
In cindex.py, Cursor.result_type called into the wrong libclang
function, causing cursors for ObjC method declarations to return invalid
result types. Fixes Bug 36677.

Reviewers: jbcoe, rsmith

Reviewed By: jbcoe

Subscribers: cfe-commits, llvm-commits

Differential Revision: https://reviews.llvm.org/D45671

Patch by kjteske (Kyle Teske).

Modified:
    cfe/trunk/bindings/python/clang/cindex.py
    cfe/trunk/bindings/python/tests/cindex/test_cursor.py

Modified: cfe/trunk/bindings/python/clang/cindex.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/bindings/python/clang/cindex.py?rev=330557&r1=330556&r2=330557&view=diff
==============================================================================
--- cfe/trunk/bindings/python/clang/cindex.py (original)
+++ cfe/trunk/bindings/python/clang/cindex.py Sun Apr 22 13:51:05 2018
@@ -1644,7 +1644,7 @@ class Cursor(Structure):
     def result_type(self):
         """Retrieve the Type of the result for this Cursor."""
         if not hasattr(self, '_result_type'):
-            self._result_type = conf.lib.clang_getResultType(self.type)
+            self._result_type = conf.lib.clang_getCursorResultType(self)
 
         return self._result_type
 
@@ -3568,6 +3568,11 @@ functionList = [
    [Cursor, c_uint, c_uint],
    SourceRange),
 
+  ("clang_getCursorResultType",
+   [Cursor],
+   Type,
+   Type.from_result),
+
   ("clang_getCursorSemanticParent",
    [Cursor],
    Cursor,

Modified: cfe/trunk/bindings/python/tests/cindex/test_cursor.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/bindings/python/tests/cindex/test_cursor.py?rev=330557&r1=330556&r2=330557&view=diff
==============================================================================
--- cfe/trunk/bindings/python/tests/cindex/test_cursor.py (original)
+++ cfe/trunk/bindings/python/tests/cindex/test_cursor.py Sun Apr 22 13:51:05 2018
@@ -429,6 +429,18 @@ class TestCursor(unittest.TestCase):
         t = foo.result_type
         self.assertEqual(t.kind, TypeKind.INT)
 
+    def test_result_type_objc_method_decl(self):
+        code = """\
+        @interface Interface : NSObject
+        -(void)voidMethod;
+        @end
+        """
+        tu = get_tu(code, lang='objc')
+        cursor = get_cursor(tu, 'voidMethod')
+        result_type = cursor.result_type
+        self.assertEqual(cursor.kind, CursorKind.OBJC_INSTANCE_METHOD_DECL)
+        self.assertEqual(result_type.kind, TypeKind.VOID)
+
     def test_availability(self):
         tu = get_tu('class A { A(A const&) = delete; };', lang='cpp')
 




More information about the cfe-commits mailing list