1// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fsyntax-only -fobjc-arc -verify %s 2// rdar://9340606 3 4@interface Foo { 5@public 6 id __unsafe_unretained x; 7 id __weak y; 8 id __autoreleasing z; // expected-error {{instance variables cannot have __autoreleasing ownership}} 9} 10@property(strong) id x; 11@property(strong) id y; 12@property(strong) id z; 13@end 14 15@interface Bar { 16@public 17 id __unsafe_unretained x; 18 id __weak y; 19 id __autoreleasing z; // expected-error {{instance variables cannot have __autoreleasing ownership}} 20} 21@property(retain) id x; 22@property(retain) id y; 23@property(retain) id z; 24@end 25 26@interface Bas { 27@public 28 id __unsafe_unretained x; 29 id __weak y; 30 id __autoreleasing z; // expected-error {{instance variables cannot have __autoreleasing ownership}} 31} 32@property(copy) id x; 33@property(copy) id y; 34@property(copy) id z; 35@end 36 37// Errors should start about here :-) 38 39@interface Bat 40@property(strong) __unsafe_unretained id x; // expected-error {{strong property 'x' may not also be declared __unsafe_unretained}} 41@property(strong) __weak id y; // expected-error {{strong property 'y' may not also be declared __weak}} expected-error {{property attributes 'strong' and 'weak' are mutually exclusive}} 42@property(strong) __autoreleasing id z; // expected-error {{strong property 'z' may not also be declared __autoreleasing}} 43@end 44 45@interface Bau 46@property(retain) __unsafe_unretained id x; // expected-error {{strong property 'x' may not also be declared __unsafe_unretained}} 47@property(retain) __weak id y; // expected-error {{strong property 'y' may not also be declared __weak}} expected-error {{property attributes 'retain' and 'weak' are mutually exclusive}} 48@property(retain) __autoreleasing id z; // expected-error {{strong property 'z' may not also be declared __autoreleasing}} 49@end 50 51@interface Bav 52@property(copy) __unsafe_unretained id x; // expected-error {{strong property 'x' may not also be declared __unsafe_unretained}} 53@property(copy) __weak id y; // expected-error {{strong property 'y' may not also be declared __weak}} expected-error {{property attributes 'copy' and 'weak' are mutually exclusive}} 54@property(copy) __autoreleasing id z; // expected-error {{strong property 'z' may not also be declared __autoreleasing}} 55@end 56 57@interface Bingo 58@property(assign) __unsafe_unretained id x; 59@property(assign) __weak id y; // expected-error {{property attributes 'assign' and 'weak' are mutually exclusive}} 60@property(assign) __autoreleasing id z; // expected-error {{unsafe_unretained property 'z' may not also be declared __autoreleasing}} 61@end 62 63@interface Batman 64@property(unsafe_unretained) __unsafe_unretained id x; 65@property(unsafe_unretained) __weak id y; // expected-error {{property attributes 'unsafe_unretained' and 'weak' are mutually exclusive}} 66@property(unsafe_unretained) __autoreleasing id z; // expected-error {{unsafe_unretained property 'z' may not also be declared __autoreleasing}} 67@end 68 69// rdar://9396329 70@interface Super 71@property (readonly, retain) id foo; 72@property (readonly, weak) id fee; 73@property (readonly, strong) id frr; 74@end 75 76@interface Bugg : Super 77@property (readwrite) id foo; 78@property (readwrite) id fee; 79@property (readwrite) id frr; 80@end 81 82