1*67e74705SXin Li// RUN: %clang_cc1 -verify %s 2*67e74705SXin Li 3*67e74705SXin Li@interface I 4*67e74705SXin Li{ 5*67e74705SXin Li id d1; 6*67e74705SXin Li} 7*67e74705SXin Li@property (readwrite, copy) id d1; 8*67e74705SXin Li@property (readwrite, copy) id d2; 9*67e74705SXin Li@end 10*67e74705SXin Li 11*67e74705SXin Li@interface NOW : I 12*67e74705SXin Li@property (readonly) id d1; // expected-warning {{attribute 'readonly' of property 'd1' restricts attribute 'readwrite' of property inherited from 'I'}} expected-warning {{'copy' attribute on property 'd1' does not match the property inherited from 'I'}} 13*67e74705SXin Li@property (readwrite, copy) I* d2; 14*67e74705SXin Li@end 15*67e74705SXin Li 16*67e74705SXin Li// rdar://13156292 17*67e74705SXin Litypedef signed char BOOL; 18*67e74705SXin Li 19*67e74705SXin Li@protocol EKProtocolCalendar 20*67e74705SXin Li@property (nonatomic, readonly) BOOL allowReminders; 21*67e74705SXin Li@property (atomic, readonly) BOOL allowNonatomicProperty; // expected-note {{property declared here}} 22*67e74705SXin Li@end 23*67e74705SXin Li 24*67e74705SXin Li@protocol EKProtocolMutableCalendar <EKProtocolCalendar> 25*67e74705SXin Li@end 26*67e74705SXin Li 27*67e74705SXin Li@interface EKCalendar 28*67e74705SXin Li@end 29*67e74705SXin Li 30*67e74705SXin Li@interface EKCalendar () <EKProtocolMutableCalendar> 31*67e74705SXin Li@property (nonatomic, assign) BOOL allowReminders; 32*67e74705SXin Li@property (nonatomic, assign) BOOL allowNonatomicProperty; // expected-warning {{'atomic' attribute on property 'allowNonatomicProperty' does not match the property inherited from 'EKProtocolCalendar'}} 33*67e74705SXin Li@end 34*67e74705SXin Li 35*67e74705SXin Li__attribute__((objc_root_class)) 36*67e74705SXin Li@interface A 37*67e74705SXin Li@property (nonatomic, readonly, getter=isAvailable) int available; // expected-note{{property declared here}} 38*67e74705SXin Li@end 39*67e74705SXin Li 40*67e74705SXin Li@interface A () 41*67e74705SXin Li@property (nonatomic, assign, getter=wasAvailable) int available; // expected-warning{{getter name mismatch between property redeclaration ('wasAvailable') and its original declaration ('isAvailable')}} 42*67e74705SXin Li@end 43