diff options
| -rw-r--r-- | clang/lib/Sema/SemaObjCProperty.cpp | 2 | ||||
| -rw-r--r-- | clang/test/SemaObjC/arc-property-lifetime.m | 15 | 
2 files changed, 16 insertions, 1 deletions
| diff --git a/clang/lib/Sema/SemaObjCProperty.cpp b/clang/lib/Sema/SemaObjCProperty.cpp index 33069928f24..751f553945c 100644 --- a/clang/lib/Sema/SemaObjCProperty.cpp +++ b/clang/lib/Sema/SemaObjCProperty.cpp @@ -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) { diff --git a/clang/test/SemaObjC/arc-property-lifetime.m b/clang/test/SemaObjC/arc-property-lifetime.m index cbed455ddc8..9cc3ada15fa 100644 --- a/clang/test/SemaObjC/arc-property-lifetime.m +++ b/clang/test/SemaObjC/arc-property-lifetime.m @@ -110,3 +110,18 @@  @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 | 

