summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/ARCMigrate/ObjCMT.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/clang/lib/ARCMigrate/ObjCMT.cpp b/clang/lib/ARCMigrate/ObjCMT.cpp
index 46d538e6327..b521b560263 100644
--- a/clang/lib/ARCMigrate/ObjCMT.cpp
+++ b/clang/lib/ARCMigrate/ObjCMT.cpp
@@ -24,6 +24,7 @@
#include "clang/Lex/PPConditionalDirectiveRecord.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Rewrite/Core/Rewriter.h"
+#include "clang/AST/Attr.h"
#include "llvm/ADT/SmallString.h"
using namespace clang;
@@ -44,7 +45,10 @@ class ObjCMigrateASTConsumer : public ASTConsumer {
void migrateFactoryMethod(ASTContext &Ctx, ObjCContainerDecl *CDecl,
ObjCMethodDecl *OM,
ObjCInstanceTypeFamily OIT_Family = OIT_None);
-
+
+ void migrateFunctionDeclAnnotation(ASTContext &Ctx, FunctionDecl *FuncDecl);
+
+ void migrateObjCMethodDeclAnnotation(ASTContext &Ctx, ObjCMethodDecl *MethodDecl);
public:
std::string MigrateDir;
bool MigrateLiterals;
@@ -739,6 +743,24 @@ void ObjCMigrateASTConsumer::migrateFactoryMethod(ASTContext &Ctx,
ReplaceWithInstancetype(*this, OM);
}
+void ObjCMigrateASTConsumer::migrateFunctionDeclAnnotation(
+ ASTContext &Ctx,
+ FunctionDecl *FuncDecl) {
+ if (FuncDecl->hasAttr<CFAuditedTransferAttr>() ||
+ FuncDecl->getAttr<CFReturnsRetainedAttr>() ||
+ FuncDecl->getAttr<CFReturnsNotRetainedAttr>())
+ return;
+}
+
+void ObjCMigrateASTConsumer::migrateObjCMethodDeclAnnotation(
+ ASTContext &Ctx,
+ ObjCMethodDecl *MethodDecl) {
+ if (MethodDecl->hasAttr<CFAuditedTransferAttr>() ||
+ MethodDecl->getAttr<CFReturnsRetainedAttr>() ||
+ MethodDecl->getAttr<CFReturnsNotRetainedAttr>())
+ return;
+}
+
namespace {
class RewritesReceiver : public edit::EditsReceiver {
OpenPOWER on IntegriCloud