]> granicus.if.org Git - clang/commitdiff
No need to default synthesize property if implementation
authorFariborz Jahanian <fjahanian@apple.com>
Wed, 25 Aug 2010 00:31:58 +0000 (00:31 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Wed, 25 Aug 2010 00:31:58 +0000 (00:31 +0000)
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

lib/Sema/SemaObjCProperty.cpp
test/SemaObjC/default-synthesize-1.m

index 91f47ab708232f59421133fe8bbe39bf6d7a2890..b9fd4a05d7aad19f9aa5d6a6b020deb8847edce9 100644 (file)
@@ -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,
index 30a2c8f1aa1db7936cc42bf7ef0a13f449084c9a..374fa8314bfdd0d9c6d1e4e59c423cab7d767256 100644 (file)
 }
 @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