зеркало из https://github.com/microsoft/clang-1.git
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:
Родитель
0554e0e30d
Коммит
95f1b86b73
|
@ -953,6 +953,12 @@ void Sema::DefaultSynthesizeProperties (Scope *S, ObjCImplDecl* IMPDecl,
|
||||||
// Property may have been synthesized by user.
|
// Property may have been synthesized by user.
|
||||||
if (IMPDecl->FindPropertyImplDecl(Prop->getIdentifier()))
|
if (IMPDecl->FindPropertyImplDecl(Prop->getIdentifier()))
|
||||||
continue;
|
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(),
|
ActOnPropertyImplDecl(S, IMPDecl->getLocation(), IMPDecl->getLocation(),
|
||||||
true, IMPDecl,
|
true, IMPDecl,
|
||||||
|
|
|
@ -85,4 +85,32 @@
|
||||||
}
|
}
|
||||||
@end
|
@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
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче