1*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s 2*67e74705SXin Li// expected-no-diagnostics 3*67e74705SXin Li 4*67e74705SXin Li@interface Tester 5*67e74705SXin Li@property char PropertyAtomic_char; 6*67e74705SXin Li@property short PropertyAtomic_short; 7*67e74705SXin Li@property int PropertyAtomic_int; 8*67e74705SXin Li@property long PropertyAtomic_long; 9*67e74705SXin Li@property long long PropertyAtomic_longlong; 10*67e74705SXin Li@property float PropertyAtomic_float; 11*67e74705SXin Li@property double PropertyAtomic_double; 12*67e74705SXin Li@property(assign) id PropertyAtomic_id; 13*67e74705SXin Li@property(retain) id PropertyAtomicRetained_id; 14*67e74705SXin Li@property(copy) id PropertyAtomicRetainedCopied_id; 15*67e74705SXin Li@property(retain) id PropertyAtomicRetainedGCOnly_id; 16*67e74705SXin Li@property(copy) id PropertyAtomicRetainedCopiedGCOnly_id; 17*67e74705SXin Li@end 18*67e74705SXin Li 19*67e74705SXin Li@implementation Tester 20*67e74705SXin Li@dynamic PropertyAtomic_char; 21*67e74705SXin Li@dynamic PropertyAtomic_short; 22*67e74705SXin Li@dynamic PropertyAtomic_int; 23*67e74705SXin Li@dynamic PropertyAtomic_long; 24*67e74705SXin Li@dynamic PropertyAtomic_longlong; 25*67e74705SXin Li@dynamic PropertyAtomic_float; 26*67e74705SXin Li@dynamic PropertyAtomic_double; 27*67e74705SXin Li@dynamic PropertyAtomic_id; 28*67e74705SXin Li@dynamic PropertyAtomicRetained_id; 29*67e74705SXin Li@dynamic PropertyAtomicRetainedCopied_id; 30*67e74705SXin Li@dynamic PropertyAtomicRetainedGCOnly_id; 31*67e74705SXin Li@dynamic PropertyAtomicRetainedCopiedGCOnly_id; 32*67e74705SXin Li@end 33*67e74705SXin Li 34*67e74705SXin Li@interface SubClass : Tester 35*67e74705SXin Li{ 36*67e74705SXin Li char PropertyAtomic_char; 37*67e74705SXin Li short PropertyAtomic_short; 38*67e74705SXin Li int PropertyAtomic_int; 39*67e74705SXin Li long PropertyAtomic_long; 40*67e74705SXin Li long long PropertyAtomic_longlong; 41*67e74705SXin Li float PropertyAtomic_float; 42*67e74705SXin Li double PropertyAtomic_double; 43*67e74705SXin Li id PropertyAtomic_id; 44*67e74705SXin Li id PropertyAtomicRetained_id; 45*67e74705SXin Li id PropertyAtomicRetainedCopied_id; 46*67e74705SXin Li id PropertyAtomicRetainedGCOnly_id; 47*67e74705SXin Li id PropertyAtomicRetainedCopiedGCOnly_id; 48*67e74705SXin Li} 49*67e74705SXin Li@end 50*67e74705SXin Li 51*67e74705SXin Li@implementation SubClass 52*67e74705SXin Li@synthesize PropertyAtomic_char; 53*67e74705SXin Li@synthesize PropertyAtomic_short; 54*67e74705SXin Li@synthesize PropertyAtomic_int; 55*67e74705SXin Li@synthesize PropertyAtomic_long; 56*67e74705SXin Li@synthesize PropertyAtomic_longlong; 57*67e74705SXin Li@synthesize PropertyAtomic_float; 58*67e74705SXin Li@synthesize PropertyAtomic_double; 59*67e74705SXin Li@synthesize PropertyAtomic_id; 60*67e74705SXin Li@synthesize PropertyAtomicRetained_id; 61*67e74705SXin Li@synthesize PropertyAtomicRetainedCopied_id; 62*67e74705SXin Li@synthesize PropertyAtomicRetainedGCOnly_id; 63*67e74705SXin Li@synthesize PropertyAtomicRetainedCopiedGCOnly_id; 64*67e74705SXin Li@end 65