aboutsummaryrefslogtreecommitdiff
path: root/lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp
diff options
context:
space:
mode:
authorAnna Zaks <ganna@apple.com>2012-10-01 20:34:04 +0000
committerAnna Zaks <ganna@apple.com>2012-10-01 20:34:04 +0000
commitbbff82f302a1dd67589f65912351978905f0c5a7 (patch)
tree32e1bef6a7e5fa080bcbcdf9a71b9d410717763e /lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp
parentb9733ac1a2012c3e909ac262073a6deb8533d2c7 (diff)
Move isObjCSelf into Expr.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164966 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp')
-rw-r--r--lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp19
1 files changed, 6 insertions, 13 deletions
diff --git a/lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp b/lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp
index 5f94403824..a88b6368e8 100644
--- a/lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp
+++ b/lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp
@@ -90,8 +90,6 @@ class IvarInvalidationChecker :
/// Statement visitor, which walks the method body and flags the ivars
/// referenced in it (either directly or via property).
class MethodCrawler : public ConstStmtVisitor<MethodCrawler> {
- const ObjCMethodDecl *EnclosingMethod;
-
/// The set of Ivars which need to be invalidated.
IvarSet &IVars;
@@ -138,15 +136,13 @@ class IvarInvalidationChecker :
void check(const Expr *E);
public:
- MethodCrawler(const ObjCMethodDecl *InMeth,
- IvarSet &InIVars,
+ MethodCrawler(IvarSet &InIVars,
bool &InCalledAnotherInvalidationMethod,
const MethToIvarMapTy &InPropertySetterToIvarMap,
const MethToIvarMapTy &InPropertyGetterToIvarMap,
const PropToIvarMapTy &InPropertyToIvarMap,
ASTContext &InCtx)
- : EnclosingMethod(InMeth),
- IVars(InIVars),
+ : IVars(InIVars),
CalledAnotherInvalidationMethod(InCalledAnotherInvalidationMethod),
PropertySetterToIvarMap(InPropertySetterToIvarMap),
PropertyGetterToIvarMap(InPropertyGetterToIvarMap),
@@ -363,7 +359,7 @@ void IvarInvalidationChecker::checkASTDecl(const ObjCMethodDecl *D,
// Check which ivars have been invalidated in the method body.
bool CalledAnotherInvalidationMethod = false;
- MethodCrawler(D, Ivars,
+ MethodCrawler(Ivars,
CalledAnotherInvalidationMethod,
PropSetterToIvarMap,
PropGetterToIvarMap,
@@ -518,12 +514,9 @@ void IvarInvalidationChecker::MethodCrawler::VisitObjCMessageExpr(
// Stop if we are calling '[self invalidate]'.
if (Receiver && isInvalidationMethod(MD))
- if (const DeclRefExpr *RD =
- dyn_cast<DeclRefExpr>(Receiver->IgnoreParenCasts())) {
- if (RD->getDecl() == EnclosingMethod->getSelfDecl()) {
- CalledAnotherInvalidationMethod = true;
- return;
- }
+ if (Receiver->isObjCSelfExpr()) {
+ CalledAnotherInvalidationMethod = true;
+ return;
}
// Check if we call a setter and set the property to 'nil'.