]>
Commit | Line | Data |
---|---|---|
223e47cc LB |
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; | |
6 | id StrongIvar; | |
7 | id __weak myString2; | |
8 | id __weak myString3; | |
9 | id StrongIvar5; | |
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-error {{existing instance variable 'myString' for strong property 'myString' may not be __weak}} | |
22 | @synthesize myString1 = StrongIvar; // OK | |
23 | @synthesize myString2 = myString2; // expected-error {{existing instance variable 'myString2' for strong property 'myString2' may not be __weak}} | |
24 | // | |
25 | @synthesize myString3; // OK | |
26 | @synthesize myString4; // OK | |
27 | @synthesize myString5 = StrongIvar5; // expected-error {{existing instance variable 'StrongIvar5' for __weak property 'myString5' must be __weak}} | |
28 | ||
29 | @end | |
30 | ||
31 | // rdar://9340692 | |
32 | @interface Foo { | |
33 | @public | |
34 | id __unsafe_unretained x; // should be __weak | |
35 | id __strong y; | |
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-error {{existing instance variable 'x' for __weak property 'x' must be __weak}} | |
45 | @synthesize y; // expected-error {{existing instance variable 'y' for __weak property 'y' must be __weak}} | |
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 | |
63 | void test3(Test3 *t3) { | |
64 | @throw t3.exception; | |
65 | } |