diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-07-15 22:04:00 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-07-15 22:04:00 +0000 |
commit | f59daff52e9f1e856c448ad1d8ebe8498d497f58 (patch) | |
tree | 36793bbf861a8745e96ee1f4b550ebc424d9f21b /clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp | |
parent | f8412cdae978c6343755ecf5340204cc3b280f12 (diff) | |
download | bcm5719-llvm-f59daff52e9f1e856c448ad1d8ebe8498d497f58.tar.gz bcm5719-llvm-f59daff52e9f1e856c448ad1d8ebe8498d497f58.zip |
[arcmt] Rewrite to "foo = nil;" not "foo = 0;", as suggested by Jordy.
llvm-svn: 135309
Diffstat (limited to 'clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp')
-rw-r--r-- | clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp b/clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp index 8e6c533991e..6f917b32465 100644 --- a/clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp +++ b/clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp @@ -19,7 +19,9 @@ #include "Transforms.h" #include "Internals.h" +#include "clang/Sema/Sema.h" #include "clang/Sema/SemaDiagnostic.h" +#include "clang/Lex/Preprocessor.h" #include "clang/AST/ParentMap.h" using namespace clang; @@ -115,10 +117,14 @@ public: if (E->getMethodFamily() == OMF_release && isRemovable(E) && isInAtFinally(E)) { - // Change the -release to "receiver = 0" in a finally to avoid a leak + // Change the -release to "receiver = nil" in a finally to avoid a leak // when an exception is thrown. Pass.TA.replace(E->getSourceRange(), rec->getSourceRange()); - Pass.TA.insertAfterToken(rec->getLocEnd(), " = 0"); + if (Pass.SemaRef.getPreprocessor() + .getIdentifierInfo("nil")->hasMacroDefinition()) + Pass.TA.insertAfterToken(rec->getLocEnd(), " = nil"); + else + Pass.TA.insertAfterToken(rec->getLocEnd(), " = 0"); return true; } |