mirror of https://github.com/microsoft/clang.git
[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). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@330557 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
67f6e8a2d2
commit
33a33e52ed
|
@ -1644,7 +1644,7 @@ class Cursor(Structure):
|
||||||
def result_type(self):
|
def result_type(self):
|
||||||
"""Retrieve the Type of the result for this Cursor."""
|
"""Retrieve the Type of the result for this Cursor."""
|
||||||
if not hasattr(self, '_result_type'):
|
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
|
return self._result_type
|
||||||
|
|
||||||
|
@ -3568,6 +3568,11 @@ functionList = [
|
||||||
[Cursor, c_uint, c_uint],
|
[Cursor, c_uint, c_uint],
|
||||||
SourceRange),
|
SourceRange),
|
||||||
|
|
||||||
|
("clang_getCursorResultType",
|
||||||
|
[Cursor],
|
||||||
|
Type,
|
||||||
|
Type.from_result),
|
||||||
|
|
||||||
("clang_getCursorSemanticParent",
|
("clang_getCursorSemanticParent",
|
||||||
[Cursor],
|
[Cursor],
|
||||||
Cursor,
|
Cursor,
|
||||||
|
|
|
@ -429,6 +429,18 @@ class TestCursor(unittest.TestCase):
|
||||||
t = foo.result_type
|
t = foo.result_type
|
||||||
self.assertEqual(t.kind, TypeKind.INT)
|
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):
|
def test_availability(self):
|
||||||
tu = get_tu('class A { A(A const&) = delete; };', lang='cpp')
|
tu = get_tu('class A { A(A const&) = delete; };', lang='cpp')
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue