]> granicus.if.org Git - clang/commitdiff
[arcmt] Make -Warc-unsafe-retained-assign an error when migrating. rdar://8939557
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Wed, 22 Jun 2011 18:03:59 +0000 (18:03 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Wed, 22 Jun 2011 18:03:59 +0000 (18:03 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133627 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ARCMigrate/ARCMT.cpp
test/ARCMT/checking.m

index 13bb33d2b85b6f2b929f74dbb2c77e3b59b6dcf3..7f3479604e2bb133c09145854f90cbd81aad8a75 100644 (file)
@@ -187,6 +187,8 @@ CompilerInvocation *createInvocationForMigration(CompilerInvocation &origCI) {
   CInvok->getPreprocessorOpts().addMacroDef(define);
   CInvok->getLangOpts().ObjCAutoRefCount = true;
   CInvok->getDiagnosticOpts().ErrorLimit = 0;
+  CInvok->getDiagnosticOpts().Warnings.push_back(
+                                            "error=arc-unsafe-retained-assign");
   CInvok->getLangOpts().ObjCNoAutoRefCountRuntime = !HasARCRuntime(origCI);
 
   return CInvok.take();
index 62387fa23b4c8d5c42bd55f6b339c59f96bede37..8ee7e80bed4eab3dde59c8a30835a6d5fd3c3cfe 100644 (file)
@@ -253,3 +253,15 @@ void rdar9491791(int p) {
 void rdar9504750(id p) {
   RELEASE_MACRO(p); // expected-error {{ARC forbids explicit message send of 'release'}}
 }
+
+// rdar://8939557
+@interface TestReadonlyProperty : NSObject
+@property(assign,readonly) NSObject *value;
+@end
+
+@implementation TestReadonlyProperty
+@synthesize value;
+- (void)viewDidLoad {
+  value = [NSObject new]; // expected-error {{assigning retained object}}
+}
+@end