Introduce a placeholder type for "pseudo object"
expressions: expressions which refer to a logical rather
than a physical l-value, where the logical object is
actually accessed via custom getter/setter code.
A subsequent patch will generalize the AST for these
so that arbitrary "implementing" sub-expressions can
be provided.
Right now the only client is ObjC properties, but
this should be generalizable to similar language
features, e.g. Managed C++'s __property methods.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142914 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Rewrite/RewriteObjC.cpp b/lib/Rewrite/RewriteObjC.cpp
index 6a392ea..1af9a6c 100644
--- a/lib/Rewrite/RewriteObjC.cpp
+++ b/lib/Rewrite/RewriteObjC.cpp
@@ -1304,7 +1304,7 @@
} else {
OMD = PropRefExpr->getImplicitPropertySetter();
Sel = OMD->getSelector();
- Ty = PropRefExpr->getType();
+ Ty = (*OMD->param_begin())->getType();
}
Super = PropRefExpr->isSuperReceiver();
if (!Super) {
@@ -1380,7 +1380,7 @@
} else {
OMD = PropRefExpr->getImplicitPropertyGetter();
Sel = OMD->getSelector();
- Ty = PropRefExpr->getType();
+ Ty = OMD->getResultType();
}
Super = PropRefExpr->isSuperReceiver();
if (!Super)