summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaPseudoObject.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2014-04-21 20:22:17 +0000
committerFariborz Jahanian <fjahanian@apple.com>2014-04-21 20:22:17 +0000
commit29cdbc63193d2c8cbf7fc370237fb5d306a07047 (patch)
treeb641b6184098870e79cadb78886fee3d2e2ae1ed /clang/lib/Sema/SemaPseudoObject.cpp
parentb0b7b18e8cb64fcb9f16bfee9b4cad0025d01ae4 (diff)
downloadbcm5719-llvm-29cdbc63193d2c8cbf7fc370237fb5d306a07047.tar.gz
bcm5719-llvm-29cdbc63193d2c8cbf7fc370237fb5d306a07047.zip
Objective-C. Patch to allow use of dot syntax on class
objects to fund root class's instance methods. // rdar://16650575 llvm-svn: 206781
Diffstat (limited to 'clang/lib/Sema/SemaPseudoObject.cpp')
-rw-r--r--clang/lib/Sema/SemaPseudoObject.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaPseudoObject.cpp b/clang/lib/Sema/SemaPseudoObject.cpp
index de02fa935ef..a8463cdbd4e 100644
--- a/clang/lib/Sema/SemaPseudoObject.cpp
+++ b/clang/lib/Sema/SemaPseudoObject.cpp
@@ -681,7 +681,8 @@ ExprResult ObjCPropertyOpBuilder::buildGet() {
// Build a message-send.
ExprResult msg;
- if (Getter->isInstanceMethod() || RefExpr->isObjectReceiver()) {
+ if ((Getter->isInstanceMethod() && !RefExpr->isClassReceiver()) ||
+ RefExpr->isObjectReceiver()) {
assert(InstanceReceiver || RefExpr->isSuperReceiver());
msg = S.BuildInstanceMessageImplicit(InstanceReceiver, receiverType,
GenericLoc, Getter->getSelector(),
@@ -750,7 +751,8 @@ ExprResult ObjCPropertyOpBuilder::buildSet(Expr *op, SourceLocation opcLoc,
// Build a message-send.
ExprResult msg;
- if (Setter->isInstanceMethod() || RefExpr->isObjectReceiver()) {
+ if ((Setter->isInstanceMethod() && !RefExpr->isClassReceiver()) ||
+ RefExpr->isObjectReceiver()) {
msg = S.BuildInstanceMessageImplicit(InstanceReceiver, receiverType,
GenericLoc, SetterSelector, Setter,
MultiExprArg(args, 1));
OpenPOWER on IntegriCloud