diff options
author | Steve Naroff <snaroff@apple.com> | 2008-10-16 14:59:30 +0000 |
---|---|---|
committer | Steve Naroff <snaroff@apple.com> | 2008-10-16 14:59:30 +0000 |
commit | 4fa4ab67dd9aa12752e1fa1421d9f4f7c937dec7 (patch) | |
tree | 2cf1b6b11480a2566662b255369e34e52e33d087 | |
parent | a179be34c1a3c0190e6b9e39dee2197651f44a5d (diff) |
Fix <rdar://problem/6239726> Parser rejects: type of property 'list' does not match type of ivar
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
-rw-r--r-- | lib/Sema/SemaDeclObjC.cpp | 4 | ||||
-rw-r--r-- | test/SemaObjC/property-9.m | 38 |
2 files changed, 39 insertions, 3 deletions
diff --git a/lib/Sema/SemaDeclObjC.cpp b/lib/Sema/SemaDeclObjC.cpp index 05c3bc78b3..6375d91448 100644 --- a/lib/Sema/SemaDeclObjC.cpp +++ b/lib/Sema/SemaDeclObjC.cpp @@ -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 index 0000000000..b83291aaca --- /dev/null +++ b/test/SemaObjC/property-9.m @@ -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 |