]> granicus.if.org Git - clang/commitdiff
objc-arc: 'Class' property is implicitly __unsafe_unretained.
authorFariborz Jahanian <fjahanian@apple.com>
Thu, 13 Oct 2011 23:45:45 +0000 (23:45 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Thu, 13 Oct 2011 23:45:45 +0000 (23:45 +0000)
// rdar://10239594

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

lib/Sema/SemaObjCProperty.cpp
test/SemaObjC/arc-property-lifetime.m

index 33069928f24a7814688eb20b129c87cee74b36b5..751f553945cd370a927cfed22d469931c3226523 100644 (file)
@@ -39,7 +39,7 @@ static Qualifiers::ObjCLifetime getImpliedARCOwnership(
   if (attrs & (ObjCPropertyDecl::OBJC_PR_retain |
                ObjCPropertyDecl::OBJC_PR_strong |
                ObjCPropertyDecl::OBJC_PR_copy)) {
-    return Qualifiers::OCL_Strong;
+    return type->getObjCARCImplicitLifetime();
   } else if (attrs & ObjCPropertyDecl::OBJC_PR_weak) {
     return Qualifiers::OCL_Weak;
   } else if (attrs & ObjCPropertyDecl::OBJC_PR_unsafe_unretained) {
index cbed455ddc821700489718a0099e4bfff10c08a8..9cc3ada15fad945ac73744a68d1caca77740e7bb 100644 (file)
 @synthesize isAutosaving = _isAutosaving;
 @end
 
+// rdar://10239594
+// Test for 'Class' properties being unretained.
+@interface MyClass {
+@private
+    Class _controllerClass;
+    id _controllerId;
+}
+@property (copy) Class controllerClass;
+@property (copy) id controllerId;
+@end
+
+@implementation MyClass
+@synthesize controllerClass = _controllerClass;
+@synthesize controllerId = _controllerId;
+@end