diff options
| author | Douglas Gregor <dgregor@apple.com> | 2012-04-13 16:05:42 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2012-04-13 16:05:42 +0000 |
| commit | aa0df2d373db140cc026b4a22a67f79766f0cb70 (patch) | |
| tree | 475420f8d9c1327701328faab9a234d9c19db035 | |
| parent | adfb842fc19b4f51f4cdce15bf556ef7a88373c0 (diff) | |
| download | bcm5719-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.cpp | 14 |
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()); |

