]> granicus.if.org Git - clang/commitdiff
ObjectiveC migrator. Don't add 'assign' for
authorFariborz Jahanian <fjahanian@apple.com>
Wed, 16 Oct 2013 20:44:26 +0000 (20:44 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Wed, 16 Oct 2013 20:44:26 +0000 (20:44 +0000)
inferred properties when type is scalar and
assumed to be 'assign. // rdar://15231241

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192841 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ARCMigrate/ObjCMT.cpp
test/ARCMT/objcmt-property.m
test/ARCMT/objcmt-property.m.result

index 0f7b4c2bbd08f813c2acf428e686792687f74698..60ab4f271f32d075f4b2c453342ba441c830288c 100644 (file)
@@ -311,8 +311,11 @@ static bool rewriteToObjCProperty(const ObjCMethodDecl *Getter,
   // "dataSource", or have exact name "target" to have 'assign' attribute.
   if (PropertyName.equals("target") ||
       (PropertyName.find("delegate") != StringRef::npos) ||
-      (PropertyName.find("dataSource") != StringRef::npos))
-    append_attr(PropertyString, "assign", LParenAdded);
+      (PropertyName.find("dataSource") != StringRef::npos)) {
+    QualType QT = Getter->getResultType();
+    if (!QT->isRealType())
+      append_attr(PropertyString, "assign", LParenAdded);
+  }
   else if (Setter) {
     const ParmVarDecl *argDecl = *Setter->param_begin();
     QualType ArgType = Context.getCanonicalType(argDecl->getType());
index c02d987ba8432f9fd4bdb543fb6ecb89ccc884f0..3b77aadb892bc85adbb792f7f411ec6cc538f67d 100644 (file)
@@ -227,3 +227,11 @@ DEPRECATED
 - (id (*)(id, NSArray *, NSMutableDictionary *)) MyFuncptr;
 - (void) setMyFuncptr : (id (*)(id, NSArray *, NSMutableDictionary *)) bl;
 @end
+
+// rdar://15231241
+@interface rdar15231241
+@property (nonatomic, readonly) double Ddelegate;
+@property (nonatomic, readonly) float Fdelegate;
+@property (nonatomic, readonly) int Idelegate;
+@property (nonatomic, readonly) BOOL Bdelegate;
+@end
index 4379be6e00c248361eddbdddf490effffca6721c..a3db9be1b69d32674f6d4aee023c51254b3713da 100644 (file)
@@ -227,3 +227,11 @@ DEPRECATED
 @property (nonatomic) id (*MyFuncptr)(id, NSArray *, NSMutableDictionary *);
 
 @end
+
+// rdar://15231241
+@interface rdar15231241
+@property (nonatomic, readonly) double Ddelegate;
+@property (nonatomic, readonly) float Fdelegate;
+@property (nonatomic, readonly) int Idelegate;
+@property (nonatomic, readonly) BOOL Bdelegate;
+@end