1// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fsyntax-only -fobjc-arc -fblocks -fobjc-exceptions -verify -Wno-objc-root-class %s 2// rdar://9309489 3 4@interface MyClass { 5 id __weak myString; // expected-error {{existing instance variable 'myString' for strong property 'myString' may not be __weak}} 6 id StrongIvar; 7 id __weak myString2; // expected-error {{existing instance variable 'myString2' for strong property 'myString2' may not be __weak}} 8 id __weak myString3; 9 id StrongIvar5; // expected-error {{existing instance variable 'StrongIvar5' for __weak property 'myString5' must be __weak}} 10} 11@property (strong) id myString; // expected-note {{property declared here}} 12@property (strong) id myString1; 13@property (retain) id myString2; // expected-note {{property declared here}} 14// 15@property (weak) id myString3; 16@property (weak) id myString4; 17@property __weak id myString5; // expected-note {{property declared here}} 18@end 19 20@implementation MyClass 21@synthesize myString; // expected-note {{property synthesized here}} 22@synthesize myString1 = StrongIvar; // OK 23@synthesize myString2 = myString2; // expected-note {{property synthesized here}} 24// 25@synthesize myString3; // OK 26@synthesize myString4; // OK 27@synthesize myString5 = StrongIvar5; // expected-note {{property synthesized here}} 28 29@end 30 31// rdar://9340692 32@interface Foo { 33@public 34 id __unsafe_unretained x; // expected-error {{existing instance variable 'x' for __weak property 'x' must be __weak}} 35 id __strong y; // expected-error {{existing instance variable 'y' for __weak property 'y' must be __weak}} 36 id __autoreleasing z; // expected-error {{instance variables cannot have __autoreleasing ownership}} 37} 38@property(weak) id x; // expected-note {{property declared here}} 39@property(weak) id y; // expected-note {{property declared here}} 40@property(weak) id z; 41@end 42 43@implementation Foo 44@synthesize x; // expected-note {{property synthesized here}} 45@synthesize y; // expected-note {{property synthesized here}} 46@synthesize z; // suppressed 47@end 48 49// rdar://problem/10904479 50// Don't crash. 51@interface Test2 52// Minor FIXME: kill the redundant error 53@property (strong) UndeclaredClass *test2; // expected-error {{unknown type name 'UndeclaredClass'}} expected-error {{must be of object type}} 54@end 55@implementation Test2 56@synthesize test2; 57@end 58 59// rdar://problem/11144407 60@interface Test3 61@property (strong) id exception; 62@end 63void test3(Test3 *t3) { 64 @throw t3.exception; 65} 66