]> granicus.if.org Git - clang/commitdiff
Fix <rdar://problem/6239726> Parser rejects: type of property 'list' does not match...
authorSteve Naroff <snaroff@apple.com>
Thu, 16 Oct 2008 14:59:30 +0000 (14:59 +0000)
committerSteve Naroff <snaroff@apple.com>
Thu, 16 Oct 2008 14:59:30 +0000 (14:59 +0000)
and
http://llvm.org/bugs/show_bug.cgi?id=2893

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57640 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDeclObjC.cpp
test/SemaObjC/property-9.m [new file with mode: 0644]

index 05c3bc78b31ece250c7d09182161f28e106d6e12..6375d91448b27eb98777ea1bda4fc6a028f97ff2 100644 (file)
@@ -1274,9 +1274,7 @@ Sema::DeclTy *Sema::ActOnPropertyImplDecl(SourceLocation AtLoc,
     
     // Check that type of property and its ivar are type compatible.
     if (PropType != IvarType) {
-      // A readonly property is allowed to be a sub-class of the ivar type.
-      if (!property->isReadOnly() ||
-          CheckAssignmentConstraints(PropType, IvarType) != Compatible) {
+      if (CheckAssignmentConstraints(PropType, IvarType) != Compatible) {
         Diag(PropertyLoc, diag::error_property_ivar_type, property->getName(),
             Ivar->getName());
         return 0;
diff --git a/test/SemaObjC/property-9.m b/test/SemaObjC/property-9.m
new file mode 100644 (file)
index 0000000..b83291a
--- /dev/null
@@ -0,0 +1,38 @@
+// RUN: clang -fsyntax-only -verify %s
+
+typedef signed char BOOL;
+@protocol NSObject  - (BOOL)isEqual:(id)object; @end
+
+@interface NSObject <NSObject> {} @end
+
+@interface _NSServicesInContextMenu : NSObject {
+    id _requestor;
+    NSObject *_appleEventDescriptor;
+}
+
+@property (retain, nonatomic) id requestor;
+@property (retain, nonatomic) id appleEventDescriptor;
+
+@end
+
+@implementation _NSServicesInContextMenu
+
+@synthesize requestor = _requestor, appleEventDescriptor = _appleEventDescriptor;
+
+@end
+
+@class NSString;
+
+@protocol MyProtocol
+- (NSString *)stringValue;
+@end
+
+@interface MyClass : NSObject {
+  id  _myIvar;
+}
+@property (readwrite, retain) id<MyProtocol> myIvar;
+@end
+
+@implementation MyClass
+@synthesize myIvar = _myIvar;
+@end