summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2013-12-12 01:02:00 +0000
committerFariborz Jahanian <fjahanian@apple.com>2013-12-12 01:02:00 +0000
commit49e69ee557ad492d7a36319671f85b88b9f66827 (patch)
treecdb0692fa472080cc53686acd23e5c431c873a8a
parente6a877518368174ea3c56016e16ed03dbf15a2e8 (diff)
downloadbcm5719-llvm-49e69ee557ad492d7a36319671f85b88b9f66827.tar.gz
bcm5719-llvm-49e69ee557ad492d7a36319671f85b88b9f66827.zip
Objective-C migrator: when inferring 'readonly' property of an
Objective-C object conforming to 'NSCopying' protocol, infer a 'copy' property, instead of 'strong'. // rdar://15525937 llvm-svn: 197102
-rw-r--r--clang/lib/ARCMigrate/ObjCMT.cpp4
-rw-r--r--clang/test/ARCMT/objcmt-atomic-property.m.result2
-rw-r--r--clang/test/ARCMT/objcmt-ns-nonatomic-iosonly.m.result2
-rw-r--r--clang/test/ARCMT/objcmt-property.m.result2
4 files changed, 6 insertions, 4 deletions
diff --git a/clang/lib/ARCMigrate/ObjCMT.cpp b/clang/lib/ARCMigrate/ObjCMT.cpp
index d25831abbc5..cd0d01957e4 100644
--- a/clang/lib/ARCMigrate/ObjCMT.cpp
+++ b/clang/lib/ARCMigrate/ObjCMT.cpp
@@ -324,7 +324,9 @@ void MigrateBlockOrFunctionPointerTypeVariable(std::string & PropertyString,
static const char *PropertyMemoryAttribute(ASTContext &Context, QualType ArgType) {
Qualifiers::ObjCLifetime propertyLifetime = ArgType.getObjCLifetime();
bool RetainableObject = ArgType->isObjCRetainableType();
- if (RetainableObject && propertyLifetime == Qualifiers::OCL_Strong) {
+ if (RetainableObject &&
+ (propertyLifetime == Qualifiers::OCL_Strong
+ || propertyLifetime == Qualifiers::OCL_None)) {
if (const ObjCObjectPointerType *ObjPtrTy =
ArgType->getAs<ObjCObjectPointerType>()) {
ObjCInterfaceDecl *IDecl = ObjPtrTy->getObjectType()->getInterface();
diff --git a/clang/test/ARCMT/objcmt-atomic-property.m.result b/clang/test/ARCMT/objcmt-atomic-property.m.result
index 7bde087ce90..3378ff1e487 100644
--- a/clang/test/ARCMT/objcmt-atomic-property.m.result
+++ b/clang/test/ARCMT/objcmt-atomic-property.m.result
@@ -87,7 +87,7 @@ typedef char BOOL;
@property (getter=getStringValue, strong) NSString *stringValue;
@property (getter=getCounterValue, readonly) BOOL counterValue;
-@property (getter=getns_dixtionary, readonly, strong) NSDictionary *ns_dixtionary;
+@property (getter=getns_dixtionary, readonly, copy) NSDictionary *ns_dixtionary;
- (BOOL)is3bar; // watch out
- (NSString *)get3foo; // watch out
diff --git a/clang/test/ARCMT/objcmt-ns-nonatomic-iosonly.m.result b/clang/test/ARCMT/objcmt-ns-nonatomic-iosonly.m.result
index 5513fce80cc..8e9e3a0c21c 100644
--- a/clang/test/ARCMT/objcmt-ns-nonatomic-iosonly.m.result
+++ b/clang/test/ARCMT/objcmt-ns-nonatomic-iosonly.m.result
@@ -94,7 +94,7 @@ typedef char BOOL;
@property (NS_NONATOMIC_IOSONLY, getter=getStringValue, strong) NSString *stringValue;
@property (NS_NONATOMIC_IOSONLY, getter=getCounterValue, readonly) BOOL counterValue;
-@property (NS_NONATOMIC_IOSONLY, getter=getns_dixtionary, readonly, strong) NSDictionary *ns_dixtionary;
+@property (NS_NONATOMIC_IOSONLY, getter=getns_dixtionary, readonly, copy) NSDictionary *ns_dixtionary;
- (BOOL)is3bar; // watch out
- (NSString *)get3foo; // watch out
diff --git a/clang/test/ARCMT/objcmt-property.m.result b/clang/test/ARCMT/objcmt-property.m.result
index eb2f5fea908..ec4ac85127e 100644
--- a/clang/test/ARCMT/objcmt-property.m.result
+++ b/clang/test/ARCMT/objcmt-property.m.result
@@ -90,7 +90,7 @@ typedef char BOOL;
@property (nonatomic, getter=getStringValue, strong) NSString *stringValue;
@property (nonatomic, getter=getCounterValue, readonly) BOOL counterValue;
-@property (nonatomic, getter=getns_dixtionary, readonly, strong) NSDictionary *ns_dixtionary;
+@property (nonatomic, getter=getns_dixtionary, readonly, copy) NSDictionary *ns_dixtionary;
- (BOOL)is3bar; // watch out
- (NSString *)get3foo; // watch out
OpenPOWER on IntegriCloud