// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s // expected-no-diagnostics @interface Tester @property char PropertyAtomic_char; @property short PropertyAtomic_short; @property int PropertyAtomic_int; @property long PropertyAtomic_long; @property long long PropertyAtomic_longlong; @property float PropertyAtomic_float; @property double PropertyAtomic_double; @property(assign) id PropertyAtomic_id; @property(retain) id PropertyAtomicRetained_id; @property(copy) id PropertyAtomicRetainedCopied_id; @property(retain) id PropertyAtomicRetainedGCOnly_id; @property(copy) id PropertyAtomicRetainedCopiedGCOnly_id; @end @implementation Tester @dynamic PropertyAtomic_char; @dynamic PropertyAtomic_short; @dynamic PropertyAtomic_int; @dynamic PropertyAtomic_long; @dynamic PropertyAtomic_longlong; @dynamic PropertyAtomic_float; @dynamic PropertyAtomic_double; @dynamic PropertyAtomic_id; @dynamic PropertyAtomicRetained_id; @dynamic PropertyAtomicRetainedCopied_id; @dynamic PropertyAtomicRetainedGCOnly_id; @dynamic PropertyAtomicRetainedCopiedGCOnly_id; @end @interface SubClass : Tester { char PropertyAtomic_char; short PropertyAtomic_short; int PropertyAtomic_int; long PropertyAtomic_long; long long PropertyAtomic_longlong; float PropertyAtomic_float; double PropertyAtomic_double; id PropertyAtomic_id; id PropertyAtomicRetained_id; id PropertyAtomicRetainedCopied_id; id PropertyAtomicRetainedGCOnly_id; id PropertyAtomicRetainedCopiedGCOnly_id; } @end @implementation SubClass @synthesize PropertyAtomic_char; @synthesize PropertyAtomic_short; @synthesize PropertyAtomic_int; @synthesize PropertyAtomic_long; @synthesize PropertyAtomic_longlong; @synthesize PropertyAtomic_float; @synthesize PropertyAtomic_double; @synthesize PropertyAtomic_id; @synthesize PropertyAtomicRetained_id; @synthesize PropertyAtomicRetainedCopied_id; @synthesize PropertyAtomicRetainedGCOnly_id; @synthesize PropertyAtomicRetainedCopiedGCOnly_id; @end