1*67e74705SXin Li// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s 2*67e74705SXin Li 3*67e74705SXin Li@interface A 4*67e74705SXin Li@end 5*67e74705SXin Li 6*67e74705SXin Li// Readonly, atomic public redeclaration of property in subclass. 7*67e74705SXin Li@interface AtomicInheritanceSuper 8*67e74705SXin Li@property (readonly) A *property; 9*67e74705SXin Li@end 10*67e74705SXin Li 11*67e74705SXin Li@interface AtomicInheritanceSuper() 12*67e74705SXin Li@property (nonatomic,readwrite,retain) A *property; 13*67e74705SXin Li@end 14*67e74705SXin Li 15*67e74705SXin Li@interface AtomicInheritanceSub : AtomicInheritanceSuper 16*67e74705SXin Li@property (readonly) A *property; 17*67e74705SXin Li@end 18*67e74705SXin Li 19*67e74705SXin Li// Readonly, atomic public redeclaration of property in subclass. 20*67e74705SXin Li@interface AtomicInheritanceSuper2 21*67e74705SXin Li@property (readonly) A *property; 22*67e74705SXin Li@end 23*67e74705SXin Li 24*67e74705SXin Li@interface AtomicInheritanceSub2 : AtomicInheritanceSuper2 25*67e74705SXin Li@property (nonatomic, readwrite, retain) A *property; 26*67e74705SXin Li@end 27*67e74705SXin Li 28*67e74705SXin Li@interface ReadonlyAtomic 29*67e74705SXin Li@property (readonly, nonatomic) A *property; 30*67e74705SXin Li@end 31*67e74705SXin Li 32*67e74705SXin Li@interface ReadonlyAtomic () 33*67e74705SXin Li@property (readwrite) A *property; 34*67e74705SXin Li@end 35*67e74705SXin Li 36*67e74705SXin Li// Readonly, atomic public redeclaration of property in subclass. 37*67e74705SXin Li@interface AtomicInheritanceSuper3 38*67e74705SXin Li@property (readonly,atomic) A *property; // expected-note{{property declared here}} 39*67e74705SXin Li@end 40*67e74705SXin Li 41*67e74705SXin Li@interface AtomicInheritanceSuper3() 42*67e74705SXin Li@property (nonatomic,readwrite,retain) A *property; // expected-warning{{'atomic' attribute on property 'property' does not match the property inherited from 'AtomicInheritanceSuper3'}} 43*67e74705SXin Li@end 44*67e74705SXin Li 45*67e74705SXin Li@interface AtomicInheritanceSub3 : AtomicInheritanceSuper3 46*67e74705SXin Li@property (readonly) A *property; 47*67e74705SXin Li@end 48*67e74705SXin Li 49*67e74705SXin Li// Readonly, atomic public redeclaration of property in subclass. 50*67e74705SXin Li@interface AtomicInheritanceSuper4 51*67e74705SXin Li@property (readonly, atomic) A *property; // expected-note{{property declared here}} 52*67e74705SXin Li@end 53*67e74705SXin Li 54*67e74705SXin Li@interface AtomicInheritanceSub4 : AtomicInheritanceSuper4 55*67e74705SXin Li@property (nonatomic, readwrite, retain) A *property; // expected-warning{{atomic' attribute on property 'property' does not match the property inherited from 'AtomicInheritanceSuper4'}} 56*67e74705SXin Li@end 57*67e74705SXin Li 58