From 2a4ebcfe8b5920ca35924359135f3c5ddca7b171 Mon Sep 17 00:00:00 2001
From: Fariborz Jahanian <fjahanian@apple.com>
Date: Mon, 8 Jul 2013 22:49:25 +0000
Subject: [PATCH] ObjC migration: Skip over setter/getter with attributes for
 now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185879 91177308-0d34-0410-b5e6-96231b3b80d8
---
 lib/ARCMigrate/ObjCMT.cpp           |  7 ++++++-
 test/ARCMT/objcmt-property.m        | 10 ++++++++++
 test/ARCMT/objcmt-property.m.result | 10 ++++++++++
 3 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/lib/ARCMigrate/ObjCMT.cpp b/lib/ARCMigrate/ObjCMT.cpp
index d01dca45a2a..5cb2223b8a5 100644
--- a/lib/ARCMigrate/ObjCMT.cpp
+++ b/lib/ARCMigrate/ObjCMT.cpp
@@ -199,6 +199,10 @@ void ObjCMigrateASTConsumer::migrateObjCInterfaceDecl(ASTContext &Ctx,
     QualType GRT = Method->getResultType();
     if (GRT->isVoidType())
       continue;
+    // FIXME. Don't know what todo with attributes, skip for now.
+    if (Method->hasAttrs())
+      continue;
+    
     Selector GetterSelector = Method->getSelector();
     IdentifierInfo *getterName = GetterSelector.getIdentifierInfoForSlot(0);
     Selector SetterSelector =
@@ -212,7 +216,8 @@ void ObjCMigrateASTConsumer::migrateObjCInterfaceDecl(ASTContext &Ctx,
         continue;
       const ParmVarDecl *argDecl = *SetterMethod->param_begin();
       QualType ArgType = argDecl->getType();
-      if (!Ctx.hasSameUnqualifiedType(ArgType, GRT))
+      if (!Ctx.hasSameUnqualifiedType(ArgType, GRT) ||
+          SetterMethod->hasAttrs())
           continue;
         edit::Commit commit(*Editor);
         edit::rewriteToObjCProperty(Method, SetterMethod, *NSAPIObj, commit);
diff --git a/test/ARCMT/objcmt-property.m b/test/ARCMT/objcmt-property.m
index f2d5e1a421f..d13a491a89a 100644
--- a/test/ARCMT/objcmt-property.m
+++ b/test/ARCMT/objcmt-property.m
@@ -14,6 +14,16 @@
 
 - (NSString *) StrongProp;
 - (void) setStrongProp : (NSString *)Val;
+
+- (NSString *) UnavailProp  __attribute__((unavailable));
+- (void) setUnavailProp  : (NSString *)Val;
+
+- (NSString *) UnavailProp1  __attribute__((unavailable));
+- (void) setUnavailProp1  : (NSString *)Val  __attribute__((unavailable));
+
+- (NSString *) UnavailProp2;
+- (void) setUnavailProp2  : (NSString *)Val  __attribute__((unavailable));
+
 @end
 
 @implementation I
diff --git a/test/ARCMT/objcmt-property.m.result b/test/ARCMT/objcmt-property.m.result
index 87b71e1f4f1..771d8634bf3 100644
--- a/test/ARCMT/objcmt-property.m.result
+++ b/test/ARCMT/objcmt-property.m.result
@@ -14,6 +14,16 @@
 
 @property(strong) NSString * StrongProp;
 
+
+- (NSString *) UnavailProp  __attribute__((unavailable));
+- (void) setUnavailProp  : (NSString *)Val;
+
+- (NSString *) UnavailProp1  __attribute__((unavailable));
+- (void) setUnavailProp1  : (NSString *)Val  __attribute__((unavailable));
+
+- (NSString *) UnavailProp2;
+- (void) setUnavailProp2  : (NSString *)Val  __attribute__((unavailable));
+
 @end
 
 @implementation I
-- 
GitLab