diff options
author | Anna Zaks <ganna@apple.com> | 2012-10-01 20:34:04 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2012-10-01 20:34:04 +0000 |
commit | bbff82f302a1dd67589f65912351978905f0c5a7 (patch) | |
tree | 32e1bef6a7e5fa080bcbcdf9a71b9d410717763e /lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp | |
parent | b9733ac1a2012c3e909ac262073a6deb8533d2c7 (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.cpp | 19 |
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'. |