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