diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2010-07-14 18:11:52 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2010-07-14 18:11:52 +0000 |
commit | 56a9d54de8fdb7901c75c8fce2cecee201c41bcb (patch) | |
tree | 9779c0964d78391faa910459f4bc97e1f48b797d /clang | |
parent | 75fbb3b5e5b28be3692f2236b0100467d10a43ef (diff) | |
download | bcm5719-llvm-56a9d54de8fdb7901c75c8fce2cecee201c41bcb.tar.gz bcm5719-llvm-56a9d54de8fdb7901c75c8fce2cecee201c41bcb.zip |
Don't error when doing default property synthesis
and some are already synthesized by user declaration.
llvm-svn: 108341
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Sema/SemaObjCProperty.cpp | 4 | ||||
-rw-r--r-- | clang/test/SemaObjC/default-synthesize.m | 12 |
2 files changed, 16 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaObjCProperty.cpp b/clang/lib/Sema/SemaObjCProperty.cpp index b2b6e13717e..ff60599b851 100644 --- a/clang/lib/Sema/SemaObjCProperty.cpp +++ b/clang/lib/Sema/SemaObjCProperty.cpp @@ -930,6 +930,10 @@ void Sema::DefaultSynthesizeProperties (Scope *S, ObjCImplDecl* IMPDecl, Prop->getPropertyImplementation() == ObjCPropertyDecl::Optional || IMPDecl->FindPropertyImplIvarDecl(Prop->getIdentifier())) continue; + // Property may have been synthesized by user. + if (IMPDecl->FindPropertyImplDecl(Prop->getIdentifier())) + continue; + ActOnPropertyImplDecl(S, IMPDecl->getLocation(), IMPDecl->getLocation(), true, DeclPtrTy::make(IMPDecl), Prop->getIdentifier(), Prop->getIdentifier()); diff --git a/clang/test/SemaObjC/default-synthesize.m b/clang/test/SemaObjC/default-synthesize.m index 283ad260a94..0586daea879 100644 --- a/clang/test/SemaObjC/default-synthesize.m +++ b/clang/test/SemaObjC/default-synthesize.m @@ -103,3 +103,15 @@ @implementation C (Category) // expected-note 2 {{implementation is here}} @end +// Don't complain if a property is already @synthesized by usr. +@interface D +{ +} +@property int PROP; +@end + +@implementation D +- (int) Meth { return self.PROP; } +@synthesize PROP=IVAR; +@end + |