//===--- TransRetainReleaseDealloc.cpp - Transformations to ARC mode ------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // removeRetainReleaseDealloc: // // Removes retain/release/autorelease/dealloc messages. // // return [[foo retain] autorelease]; // ----> // return foo; // //===----------------------------------------------------------------------===// #include "Transforms.h" #include "Internals.h" #include "clang/AST/ASTContext.h" #include "clang/AST/ParentMap.h" #include "clang/Basic/SourceManager.h" #include "clang/Lex/Lexer.h" #include "clang/Sema/SemaDiagnostic.h" #include "llvm/ADT/StringSwitch.h" usingnamespaceclang; usingnamespacearcmt; usingnamespacetrans; namespace { class RetainReleaseDeallocRemover : public RecursiveASTVisitor<RetainReleaseDeallocRemover> { … }; } // anonymous namespace void trans::removeRetainReleaseDeallocFinalize(MigrationPass &pass) { … }