forked from OSchip/llvm-project
Objective-C: Removes a bogus warning about auto-synthesis
of properties. Fixes // rdar://14085456 llvm-svn: 183542
This commit is contained in:
parent
ebe0be9ca4
commit
4614524d4a
|
@ -1673,16 +1673,6 @@ void Sema::DefaultSynthesizeProperties(Scope *S, ObjCImplDecl* IMPDecl,
|
|||
if (Prop->isInvalidDecl() ||
|
||||
Prop->getPropertyImplementation() == ObjCPropertyDecl::Optional)
|
||||
continue;
|
||||
if (ObjCPropertyImplDecl *PID =
|
||||
IMPDecl->FindPropertyImplIvarDecl(Prop->getIdentifier())) {
|
||||
if (PID->getPropertyDecl() != Prop) {
|
||||
Diag(Prop->getLocation(), diag::warn_no_autosynthesis_shared_ivar_property)
|
||||
<< Prop->getIdentifier()->getName();
|
||||
if (!PID->getLocation().isInvalid())
|
||||
Diag(PID->getLocation(), diag::note_property_synthesize);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
// Property may have been synthesized by user.
|
||||
if (IMPDecl->FindPropertyImplDecl(Prop->getIdentifier()))
|
||||
continue;
|
||||
|
@ -1692,6 +1682,16 @@ void Sema::DefaultSynthesizeProperties(Scope *S, ObjCImplDecl* IMPDecl,
|
|||
if (IMPDecl->getInstanceMethod(Prop->getSetterName()))
|
||||
continue;
|
||||
}
|
||||
if (ObjCPropertyImplDecl *PID =
|
||||
IMPDecl->FindPropertyImplIvarDecl(Prop->getIdentifier())) {
|
||||
if (PID->getPropertyDecl() != Prop) {
|
||||
Diag(Prop->getLocation(), diag::warn_no_autosynthesis_shared_ivar_property)
|
||||
<< Prop->getIdentifier()->getName();
|
||||
if (!PID->getLocation().isInvalid())
|
||||
Diag(PID->getLocation(), diag::note_property_synthesize);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (isa<ObjCProtocolDecl>(Prop->getDeclContext())) {
|
||||
// We won't auto-synthesize properties declared in protocols.
|
||||
Diag(IMPDecl->getLocation(),
|
||||
|
|
|
@ -111,3 +111,21 @@ __attribute ((objc_requires_property_definitions)) // expected-error {{objc_requ
|
|||
|
||||
@implementation S
|
||||
@end
|
||||
|
||||
// rdar://14085456
|
||||
// No warning must be issued in this test.
|
||||
@interface ParentObject
|
||||
@end
|
||||
|
||||
@protocol TestObject
|
||||
@property (readonly) int six;
|
||||
@end
|
||||
|
||||
@interface TestObject : ParentObject <TestObject>
|
||||
@property int six;
|
||||
@end
|
||||
|
||||
@implementation TestObject
|
||||
@synthesize six;
|
||||
@end
|
||||
|
||||
|
|
Loading…
Reference in New Issue