summaryrefslogtreecommitdiffstats
path: root/clang/tools/libclang
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-11-01 02:01:34 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-11-01 02:01:34 +0000
commitb26a24cca2fa03ae7db14b0b6290c005ed93cd55 (patch)
tree9589cb7655dfdbe28514aa40033dd7891c7fbe74 /clang/tools/libclang
parentb351c8d692cd0722d112d568c8f8a47647ac145d (diff)
downloadbcm5719-llvm-b26a24cca2fa03ae7db14b0b6290c005ed93cd55.tar.gz
bcm5719-llvm-b26a24cca2fa03ae7db14b0b6290c005ed93cd55.zip
[libclang] Introduce clang_Cursor_getReceiverType which returns the CXType for
the receiver of an ObjC message expression. rdar://12578643 llvm-svn: 167201
Diffstat (limited to 'clang/tools/libclang')
-rw-r--r--clang/tools/libclang/CXCursor.cpp13
-rw-r--r--clang/tools/libclang/libclang.exports1
2 files changed, 14 insertions, 0 deletions
diff --git a/clang/tools/libclang/CXCursor.cpp b/clang/tools/libclang/CXCursor.cpp
index ce517023f40..8d3e1690edc 100644
--- a/clang/tools/libclang/CXCursor.cpp
+++ b/clang/tools/libclang/CXCursor.cpp
@@ -15,6 +15,7 @@
#include "CXTranslationUnit.h"
#include "CXCursor.h"
+#include "CXType.h"
#include "CXString.h"
#include "clang/Frontend/ASTUnit.h"
#include "clang/AST/Decl.h"
@@ -1172,4 +1173,16 @@ int clang_Cursor_isDynamicCall(CXCursor C) {
return 0;
}
+CXType clang_Cursor_getReceiverType(CXCursor C) {
+ CXTranslationUnit TU = cxcursor::getCursorTU(C);
+ const Expr *E = 0;
+ if (clang_isExpression(C.kind))
+ E = getCursorExpr(C);
+
+ if (const ObjCMessageExpr *MsgE = dyn_cast_or_null<ObjCMessageExpr>(E))
+ return cxtype::MakeCXType(MsgE->getReceiverType(), TU);
+
+ return cxtype::MakeCXType(QualType(), TU);
+}
+
} // end: extern "C"
diff --git a/clang/tools/libclang/libclang.exports b/clang/tools/libclang/libclang.exports
index ec77fafa7b6..4495b66bdc1 100644
--- a/clang/tools/libclang/libclang.exports
+++ b/clang/tools/libclang/libclang.exports
@@ -13,6 +13,7 @@ clang_Cursor_getNumArguments
clang_Cursor_getObjCSelectorIndex
clang_Cursor_getSpellingNameRange
clang_Cursor_getTranslationUnit
+clang_Cursor_getReceiverType
clang_Cursor_isDynamicCall
clang_Cursor_isNull
clang_Cursor_getModule
OpenPOWER on IntegriCloud