1 // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s 2 3 @interface ReadOnly 4 { 5 id _object; 6 id _object1; 7 } 8 @property(readonly) id object; 9 @property(readwrite, assign) id object1; // expected-note {{property declared here}} 10 @property (readonly) int indentLevel; 11 @end 12 13 @interface ReadOnly () 14 @property(readwrite, copy) id object; // Ok. declaring memory model in class extension - primary has none. 15 @property(readonly) id object1; // expected-error {{illegal redeclaration of property in class extension 'ReadOnly' (attribute must be 'readwrite', while its primary must be 'readonly')}} 16 @property (readwrite, assign) int indentLevel; // OK. assign the default in any case. 17 @end 18 19 @protocol Proto 20 @property (copy) id fee; // expected-note {{property declared here}} 21 @end 22 23 @protocol Foo<Proto> 24 @property (copy) id foo; // expected-note {{property declared here}} 25 @end 26 27 @interface Bar <Foo> { 28 id _foo; 29 id _fee; 30 } 31 @end 32 33 @interface Bar () 34 @property (copy) id foo; // expected-error {{illegal redeclaration of property in class extension 'Bar' (attribute must be 'readwrite', while its primary must be 'readonly')}} 35 @property (copy) id fee; // expected-error {{illegal redeclaration of property in class extension 'Bar' (attribute must be 'readwrite', while its primary must be 'readonly')}} 36 @end 37 38 @implementation Bar 39 @synthesize foo = _foo; 40 @synthesize fee = _fee; 41 @end 42 43 // rdar://10752081 44 @interface MyOtherClass() // expected-error {{cannot find interface declaration for 'MyOtherClass'}} 45 { 46 id array; 47 } 48 @end 49 50 @implementation MyOtherClass // expected-warning {{cannot find interface declaration for 'MyOtherClass'}} 51 @end 52