diff options
Diffstat (limited to 'tools/libclang/CXCursor.cpp')
-rw-r--r-- | tools/libclang/CXCursor.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/tools/libclang/CXCursor.cpp b/tools/libclang/CXCursor.cpp index ce517023f4..8d3e1690ed 100644 --- a/tools/libclang/CXCursor.cpp +++ b/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" |