]> granicus.if.org Git - clang/commitdiff
objc-arc: Mention property's attribute by name when
authorFariborz Jahanian <fjahanian@apple.com>
Fri, 26 Aug 2011 21:21:19 +0000 (21:21 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Fri, 26 Aug 2011 21:21:19 +0000 (21:21 +0000)
finding life-time conflict with its declared ivar.
// rdar://10007230

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

include/clang/Basic/DiagnosticSemaKinds.td
lib/Sema/SemaObjCProperty.cpp
test/SemaObjC/arc-property-lifetime.m

index 3d8fbd37c1287f94b0a98f21b629c9c536ae7a4e..2781675f00a8ae063133d33c3e102e3fb8a1ac5a 100644 (file)
@@ -2851,7 +2851,8 @@ def err_arc_strong_property_ownership : Error<
   "existing ivar %1 for strong property %0 may not be "
   "%select{|__unsafe_unretained||__weak}2">;
 def err_arc_assign_property_ownership : Error<
-  "existing ivar %1 for unsafe_unretained property %0 must be __unsafe_unretained">;
+  "existing ivar %1 for property %0 with %select{unsafe_unretained| assign}2 "
+  "attribute must be __unsafe_unretained">;
 def err_arc_inconsistent_property_ownership : Error<
   "%select{strong|weak|unsafe_unretained}1 property %0 may not also be "
   "declared %select{|__unsafe_unretained|__strong|__weak|__autoreleasing}2">;
index 46f64561af5798574693f70067df3e47b443ad86..4b9cd66f96e9e1ad76f1371d7cf1de330ec6c158 100644 (file)
@@ -487,7 +487,9 @@ static void checkARCPropertyImpl(Sema &S, SourceLocation propertyImplLoc,
     case Qualifiers::OCL_Strong:
       S.Diag(propertyImplLoc, diag::err_arc_assign_property_ownership)
         << property->getDeclName()
-        << ivar->getDeclName();
+        << ivar->getDeclName()
+        << ((property->getPropertyAttributesAsWritten() 
+            & ObjCPropertyDecl::OBJC_PR_assign) != 0);
       break;
     }
 
index b1c84c75c05824c99edcabb74fa1b0f06a34d81e..88321e23933debd8624e6bac649545173a63c0ad 100644 (file)
@@ -79,7 +79,7 @@
 
 @implementation Gorf
 @synthesize x;
-@synthesize y; // expected-error {{existing ivar 'y' for unsafe_unretained property 'y' must be __unsafe_unretained}}
+@synthesize y; // expected-error {{existing ivar 'y' for property 'y' with  assign attribute must be __unsafe_unretained}}
 @synthesize z;
 @end
 
@@ -94,7 +94,7 @@
 
 @implementation Gorf2
 @synthesize x;
-@synthesize y; // expected-error {{existing ivar 'y' for unsafe_unretained property 'y' must be __unsafe_unretained}}
+@synthesize y; // expected-error {{existing ivar 'y' for property 'y' with unsafe_unretained attribute must be __unsafe_unretained}}
 @synthesize z;
 @end