summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ExprCXX.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2010-10-27 06:55:41 +0000
committerChandler Carruth <chandlerc@gmail.com>2010-10-27 06:55:41 +0000
commit00426b4876c04346de6e78a9d29760e524d0bc81 (patch)
tree3db01028e8123ee8b13dc91deab9b15d8038ab68 /clang/lib/AST/ExprCXX.cpp
parent90f90cdae1fb38a3c5e9bbd8b31b0695b53a1030 (diff)
downloadbcm5719-llvm-00426b4876c04346de6e78a9d29760e524d0bc81.tar.gz
bcm5719-llvm-00426b4876c04346de6e78a9d29760e524d0bc81.zip
Add helper for extracting the CXXRecordDecl for the implicit argument to
a member call expression. This has proved to be a common pattern for users of RecursiveASTVisitor. llvm-svn: 117439
Diffstat (limited to 'clang/lib/AST/ExprCXX.cpp')
-rw-r--r--clang/lib/AST/ExprCXX.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp
index 0cdf8dd075d..1e0691830aa 100644
--- a/clang/lib/AST/ExprCXX.cpp
+++ b/clang/lib/AST/ExprCXX.cpp
@@ -385,6 +385,17 @@ Expr *CXXMemberCallExpr::getImplicitObjectArgument() {
return 0;
}
+CXXRecordDecl *CXXMemberCallExpr::getRecordDecl() {
+ Expr* ThisArg = getImplicitObjectArgument();
+ if (!ThisArg)
+ return 0;
+
+ if (ThisArg->getType()->isAnyPointerType())
+ return ThisArg->getType()->getPointeeType()->getAsCXXRecordDecl();
+
+ return ThisArg->getType()->getAsCXXRecordDecl();
+}
+
SourceRange CXXMemberCallExpr::getSourceRange() const {
SourceLocation LocStart = getCallee()->getLocStart();
if (LocStart.isInvalid() && getNumArgs() > 0)
OpenPOWER on IntegriCloud