]> granicus.if.org Git - clang/commitdiff
Revert "Remove unused member (& consequently unused parameter) in SA's Call code."
authorJordan Rose <jordan_rose@apple.com>
Mon, 2 Jul 2012 21:41:53 +0000 (21:41 +0000)
committerJordan Rose <jordan_rose@apple.com>
Mon, 2 Jul 2012 21:41:53 +0000 (21:41 +0000)
...and instead add an accessor. We're not using this today, but it's something
that should probably stay in the source for potential clients, and it doesn't
cost a lot. (ObjCPropertyAccess is only created on the stack, and right now
there's only ever one alive at a time.)

This reverts r159581 / commit 8e674e1da34a131faa7d43dc3fcbd6e49120edbe.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159595 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/StaticAnalyzer/Core/PathSensitive/Calls.h
lib/StaticAnalyzer/Core/ExprEngine.cpp

index 86001baffeb25946f7bfc4111460eba6ab82e44e..f5d6309884bd328860ae1383c2cce89a840496f5 100644 (file)
@@ -405,13 +405,16 @@ public:
 ///
 /// Example: obj.prop += 1;
 class ObjCPropertyAccess : public ObjCMethodCall {
+  const ObjCPropertyRefExpr *PropE;
   SourceRange EntireRange;
 
 public:
-  ObjCPropertyAccess(SourceRange range, const ObjCMessageExpr *Msg,
-                     const ProgramStateRef St, const LocationContext *LCtx)
-    : ObjCMethodCall(Msg, St, LCtx, CE_ObjCPropertyAccess), EntireRange(range)
-  {}
+  ObjCPropertyAccess(const ObjCPropertyRefExpr *pe, SourceRange range,
+                     const ObjCMessageExpr *Msg, const ProgramStateRef St,
+                     const LocationContext *LCtx)
+    : ObjCMethodCall(Msg, St, LCtx, CE_ObjCPropertyAccess), PropE(pe),
+      EntireRange(range)
+    {}
 
   /// \brief Returns true if this property access is calling the setter method.
   bool isSetter() const {
@@ -422,6 +425,10 @@ public:
     return EntireRange;
   }
 
+  const ObjCPropertyRefExpr *getPropertyExpr() const {
+    return PropE;
+  }
+
   static bool classof(const CallEvent *CA) {
     return CA->getKind() == CE_ObjCPropertyAccess;
   }
index ae38a12160c61d32910a43f6632197e31a30e26b..63aa28fa0aab34d6875095b7aff8bfb7f1db6af9 100644 (file)
@@ -881,8 +881,9 @@ void ExprEngine::Visit(const Stmt *S, ExplodedNode *Pred,
         if (const BinaryOperator *BO = dyn_cast<BinaryOperator>(syntactic))
           syntactic = BO->getLHS();
 
-        if (isa<ObjCPropertyRefExpr>(syntactic)) {
-          VisitObjCMessage(ObjCPropertyAccess(PO->getSourceRange(), ME,
+        if (const ObjCPropertyRefExpr *PR =
+              dyn_cast<ObjCPropertyRefExpr>(syntactic)) {
+          VisitObjCMessage(ObjCPropertyAccess(PR, PO->getSourceRange(), ME,
                                               Pred->getState(), LCtx),
                            Pred, Dst);
           evaluated = true;