diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-12-10 20:08:30 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-12-10 20:08:30 +0000 |
commit | e005d19456e6fb73ace33f25e02ac10e22dd063f (patch) | |
tree | 0c727d9aa27cc494ee098547d19348fee95cf354 /lib/AST/Expr.cpp | |
parent | f40f0d5a382395e0301d7dcbeaa2b8e90b8973b1 (diff) |
Introduce ObjCMessageExpr::getReceiverRange() to get the source range of the receiver.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121517 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/Expr.cpp')
-rw-r--r-- | lib/AST/Expr.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index 93ebb70442..bb91934669 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -2330,7 +2330,23 @@ ObjCMessageExpr *ObjCMessageExpr::CreateEmpty(ASTContext &Context, void *Mem = Context.Allocate(Size, llvm::AlignOf<ObjCMessageExpr>::Alignment); return new (Mem) ObjCMessageExpr(EmptyShell(), NumArgs); } - + +SourceRange ObjCMessageExpr::getReceiverRange() const { + switch (getReceiverKind()) { + case Instance: + return getInstanceReceiver()->getSourceRange(); + + case Class: + return getClassReceiverTypeInfo()->getTypeLoc().getSourceRange(); + + case SuperInstance: + case SuperClass: + return getSuperLoc(); + } + + return SourceLocation(); +} + Selector ObjCMessageExpr::getSelector() const { if (HasMethod) return reinterpret_cast<const ObjCMethodDecl *>(SelectorOrMethod) |