From b81765f59f0c99da3b4e934686bfc118b91aded0 Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Wed, 16 Oct 2013 20:44:26 +0000 Subject: [PATCH] ObjectiveC migrator. Don't add 'assign' for 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 | 7 +++++-- test/ARCMT/objcmt-property.m | 8 ++++++++ test/ARCMT/objcmt-property.m.result | 8 ++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/ARCMigrate/ObjCMT.cpp b/lib/ARCMigrate/ObjCMT.cpp index 0f7b4c2bbd..60ab4f271f 100644 --- a/lib/ARCMigrate/ObjCMT.cpp +++ b/lib/ARCMigrate/ObjCMT.cpp @@ -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()); diff --git a/test/ARCMT/objcmt-property.m b/test/ARCMT/objcmt-property.m index c02d987ba8..3b77aadb89 100644 --- a/test/ARCMT/objcmt-property.m +++ b/test/ARCMT/objcmt-property.m @@ -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 diff --git a/test/ARCMT/objcmt-property.m.result b/test/ARCMT/objcmt-property.m.result index 4379be6e00..a3db9be1b6 100644 --- a/test/ARCMT/objcmt-property.m.result +++ b/test/ARCMT/objcmt-property.m.result @@ -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 -- 2.40.0