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