No need to default synthesize property if implementation

has its own getter and setter methods declared.
Fixed 8349319 (nonfragile-abi2).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112003 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Fariborz Jahanian 2010-08-25 00:31:58 +00:00
Родитель 0554e0e30d
Коммит 95f1b86b73
2 изменённых файлов: 34 добавлений и 0 удалений

Просмотреть файл

@ -953,6 +953,12 @@ void Sema::DefaultSynthesizeProperties (Scope *S, ObjCImplDecl* IMPDecl,
// 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;
}
ActOnPropertyImplDecl(S, IMPDecl->getLocation(), IMPDecl->getLocation(),
true, IMPDecl,

Просмотреть файл

@ -85,4 +85,32 @@
}
@end
// rdar://8349319
// No default synthesis if implementation has getter (readonly) and setter(readwrite) methods.
@interface DSATextSearchResult
@property(assign,readonly) float relevance;
@property(assign,readonly) char isTitleMatch;
@end
@interface DSANodeSearchResult : DSATextSearchResult {}
@end
@implementation DSATextSearchResult
-(char)isTitleMatch {
return (char)0;
}
-(float)relevance {
return 0.0;
}
@end
@implementation DSANodeSearchResult
-(id)initWithNode:(id )node relevance:(float)relevance isTitleMatch:(char)isTitleMatch {
relevance = 0.0;
isTitleMatch = 'a';
return self;
}
@end