objc-arc: Mention property's attribute by name when

finding life-time conflict with its declared ivar.
// rdar://10007230

llvm-svn: 138659
This commit is contained in:
Fariborz Jahanian 2011-08-26 21:21:19 +00:00
parent fee8eda35b
commit 97b6ac5407
3 changed files with 7 additions and 4 deletions

View File

@ -2851,7 +2851,8 @@ def err_arc_strong_property_ownership : Error<
"existing ivar %1 for strong property %0 may not be " "existing ivar %1 for strong property %0 may not be "
"%select{|__unsafe_unretained||__weak}2">; "%select{|__unsafe_unretained||__weak}2">;
def err_arc_assign_property_ownership : Error< 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< def err_arc_inconsistent_property_ownership : Error<
"%select{strong|weak|unsafe_unretained}1 property %0 may not also be " "%select{strong|weak|unsafe_unretained}1 property %0 may not also be "
"declared %select{|__unsafe_unretained|__strong|__weak|__autoreleasing}2">; "declared %select{|__unsafe_unretained|__strong|__weak|__autoreleasing}2">;

View File

@ -487,7 +487,9 @@ static void checkARCPropertyImpl(Sema &S, SourceLocation propertyImplLoc,
case Qualifiers::OCL_Strong: case Qualifiers::OCL_Strong:
S.Diag(propertyImplLoc, diag::err_arc_assign_property_ownership) S.Diag(propertyImplLoc, diag::err_arc_assign_property_ownership)
<< property->getDeclName() << property->getDeclName()
<< ivar->getDeclName(); << ivar->getDeclName()
<< ((property->getPropertyAttributesAsWritten()
& ObjCPropertyDecl::OBJC_PR_assign) != 0);
break; break;
} }

View File

@ -79,7 +79,7 @@
@implementation Gorf @implementation Gorf
@synthesize x; @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; @synthesize z;
@end @end
@ -94,7 +94,7 @@
@implementation Gorf2 @implementation Gorf2
@synthesize x; @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; @synthesize z;
@end @end