mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-04 20:20:54 +00:00
Objective-C: Another case of issuing warning about misusing
property auto-synthesis before knowingit it is to be auto-synthesized. // rdar://14094682 llvm-svn: 183556
This commit is contained in:
parent
0220e6bd85
commit
bbc126e7df
@ -1655,6 +1655,19 @@ void Sema::DefaultSynthesizeProperties(Scope *S, ObjCImplDecl* IMPDecl,
|
||||
|
||||
for (unsigned i = 0, e = PropertyOrder.size(); i != e; i++) {
|
||||
ObjCPropertyDecl *Prop = PropertyOrder[i];
|
||||
// Is there a matching property synthesize/dynamic?
|
||||
if (Prop->isInvalidDecl() ||
|
||||
Prop->getPropertyImplementation() == ObjCPropertyDecl::Optional)
|
||||
continue;
|
||||
// Property may have been synthesized by user.
|
||||
if (IMPDecl->FindPropertyImplDecl(Prop->getIdentifier()))
|
||||
continue;
|
||||
if (IMPDecl->getInstanceMethod(Prop->getGetterName())) {
|
||||
if (Prop->getPropertyAttributes() & ObjCPropertyDecl::OBJC_PR_readonly)
|
||||
continue;
|
||||
if (IMPDecl->getInstanceMethod(Prop->getSetterName()))
|
||||
continue;
|
||||
}
|
||||
// If property to be implemented in the super class, ignore.
|
||||
if (SuperPropMap[Prop->getIdentifier()]) {
|
||||
ObjCPropertyDecl *PropInSuperClass = SuperPropMap[Prop->getIdentifier()];
|
||||
@ -1669,19 +1682,6 @@ void Sema::DefaultSynthesizeProperties(Scope *S, ObjCImplDecl* IMPDecl,
|
||||
}
|
||||
continue;
|
||||
}
|
||||
// Is there a matching property synthesize/dynamic?
|
||||
if (Prop->isInvalidDecl() ||
|
||||
Prop->getPropertyImplementation() == ObjCPropertyDecl::Optional)
|
||||
continue;
|
||||
// Property may have been synthesized by user.
|
||||
if (IMPDecl->FindPropertyImplDecl(Prop->getIdentifier()))
|
||||
continue;
|
||||
if (IMPDecl->getInstanceMethod(Prop->getGetterName())) {
|
||||
if (Prop->getPropertyAttributes() & ObjCPropertyDecl::OBJC_PR_readonly)
|
||||
continue;
|
||||
if (IMPDecl->getInstanceMethod(Prop->getSetterName()))
|
||||
continue;
|
||||
}
|
||||
if (ObjCPropertyImplDecl *PID =
|
||||
IMPDecl->FindPropertyImplIvarDecl(Prop->getIdentifier())) {
|
||||
if (PID->getPropertyDecl() != Prop) {
|
||||
|
@ -129,3 +129,28 @@ __attribute ((objc_requires_property_definitions)) // expected-error {{objc_requ
|
||||
@synthesize six;
|
||||
@end
|
||||
|
||||
// rdar://14094682
|
||||
// no warning in this test
|
||||
@interface ISAChallenge : NSObject {
|
||||
}
|
||||
|
||||
@property (assign, readonly) int failureCount;
|
||||
@end
|
||||
|
||||
@interface ISSAChallenge : ISAChallenge {
|
||||
int _failureCount;
|
||||
}
|
||||
@property (assign, readwrite) int failureCount;
|
||||
@end
|
||||
|
||||
@implementation ISAChallenge
|
||||
- (int)failureCount {
|
||||
return 0;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation ISSAChallenge
|
||||
|
||||
@synthesize failureCount = _failureCount;
|
||||
@end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user