summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2012-04-13 16:05:42 +0000
committerDouglas Gregor <dgregor@apple.com>2012-04-13 16:05:42 +0000
commitaa0df2d373db140cc026b4a22a67f79766f0cb70 (patch)
tree475420f8d9c1327701328faab9a234d9c19db035
parentadfb842fc19b4f51f4cdce15bf556ef7a88373c0 (diff)
downloadbcm5719-llvm-aa0df2d373db140cc026b4a22a67f79766f0cb70.tar.gz
bcm5719-llvm-aa0df2d373db140cc026b4a22a67f79766f0cb70.zip
Make control flow more explicit for rebuilding property reference expressions without their OpaqueValueExprs
llvm-svn: 154669
-rw-r--r--clang/lib/Sema/SemaPseudoObject.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/clang/lib/Sema/SemaPseudoObject.cpp b/clang/lib/Sema/SemaPseudoObject.cpp
index 3b2cf8d7350..3a548767719 100644
--- a/clang/lib/Sema/SemaPseudoObject.cpp
+++ b/clang/lib/Sema/SemaPseudoObject.cpp
@@ -1300,13 +1300,13 @@ static Expr *stripOpaqueValuesFromPseudoObjectRef(Sema &S, Expr *E) {
Expr *opaqueRef = E->IgnoreParens();
if (ObjCPropertyRefExpr *refExpr
= dyn_cast<ObjCPropertyRefExpr>(opaqueRef)) {
- if (refExpr->isObjectReceiver()) {
- OpaqueValueExpr *baseOVE = cast<OpaqueValueExpr>(refExpr->getBase());
- return ObjCPropertyRefRebuilder(S, baseOVE->getSourceExpr()).rebuild(E);
- }
-
- // Neither class or super property references need a rebuild.
- return E;
+ // Class and super property references don't have opaque values in them.
+ if (refExpr->isClassReceiver() || refExpr->isSuperReceiver())
+ return E;
+
+ assert(refExpr->isObjectReceiver() && "Unknown receiver kind?");
+ OpaqueValueExpr *baseOVE = cast<OpaqueValueExpr>(refExpr->getBase());
+ return ObjCPropertyRefRebuilder(S, baseOVE->getSourceExpr()).rebuild(E);
} else if (ObjCSubscriptRefExpr *refExpr
= dyn_cast<ObjCSubscriptRefExpr>(opaqueRef)) {
OpaqueValueExpr *baseOVE = cast<OpaqueValueExpr>(refExpr->getBaseExpr());
OpenPOWER on IntegriCloud