1 // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s 2 3 @interface Test { 4 int x; 5 } 6 7 -(void) setX: (int) d; 8 @end 9 10 extern struct foo x; 11 12 @implementation Test 13 14 -(void) setX: (int) n { 15 x = n; 16 } 17 18 @end 19 20 @interface Ivar 21 - (float*)method; 22 @end 23 24 @interface A { 25 A *Ivar; 26 } 27 - (int*)method; 28 @end 29 30 @implementation A 31 - (int*)method { 32 int *ip = [Ivar method]; // expected-warning{{incompatible pointer types initializing 'int *' with an expression of type 'float *'}} 33 // Note that there is no warning in Objective-C++ 34 return 0; 35 } 36 @end 37 38 @interface TwoIvars { 39 int a; 40 int b; 41 } 42 @end 43 44 @implementation TwoIvars 45 + (int)classMethod { 46 return a + b; // expected-error{{instance variable 'a' accessed in class method}} \ 47 // expected-error{{instance variable 'b' accessed in class method}} 48 } 49 @end 50 51 // rdar://10309454 52 @interface Radar10309454 53 { 54 int IVAR; // expected-note 4 {{previous definition is here}} 55 } 56 @end 57 58 @interface Radar10309454() 59 { 60 int IVAR; // expected-error {{instance variable is already declared}} 61 int PIVAR; // expected-note {{previous definition is here}} 62 } 63 @end 64 65 @interface Radar10309454() 66 { 67 int IVAR; // expected-error {{instance variable is already declared}} 68 } 69 @end 70 71 @interface Radar10309454() 72 { 73 int IVAR; // expected-error {{instance variable is already declared}} 74 int PIVAR; // expected-error {{instance variable is already declared}} 75 } 76 @end 77 78 @implementation Radar10309454 79 { 80 int IVAR; // expected-error {{instance variable is already declared}} 81 } 82 @end 83 84 // PR5984 85 // rdar://14037151 86 @interface Radar14037151 { 87 int myStatus; 88 } 89 - (int) test; 90 @end 91 92 @implementation Radar14037151 93 - (int) test 94 { 95 myStatus = 1; // works 96 __typeof(myStatus) __in; // works. 97 union U { 98 __typeof(myStatus) __in; // fails. 99 }; 100 struct S { 101 __typeof(myStatus) __in; // fails. 102 struct S1 { // expected-warning {{declaration does not declare anything}} 103 __typeof(myStatus) __in; // fails. 104 struct S { // expected-warning {{declaration does not declare anything}} 105 __typeof(myStatus) __in; // fails. 106 }; 107 }; 108 }; 109 110 return 0; 111 } 112 @end 113 114 // rdar://14278560 115 @class NSString, NSData, NSNumber; 116 117 @interface NSObject 118 { 119 Class isa; 120 } 121 @end 122 123 @interface Foo 124 { 125 int a; 126 NSString* b; 127 NSData* c; 128 } 129 @end 130 131 @interface Bar : Foo 132 @end 133 134 @interface Bar () { 135 NSString *q_strong; 136 NSNumber *r_strong; 137 int d; // expected-note {{previous definition is here}} 138 NSString *e_strong; // expected-note {{previous definition is here}} 139 NSData *f_weak; // expected-note {{previous definition is here}} 140 int g; // expected-note 2 {{previous definition is here}} 141 } 142 @end 143 144 @interface Bar () { 145 int g; // expected-note {{previous definition is here}} \ 146 // expected-error {{instance variable is already declared}} 147 } 148 @end 149 150 @implementation Bar { 151 int d; // expected-error {{instance variable is already declared}} 152 NSString *e_strong; // expected-error {{instance variable is already declared}} 153 NSData *f_weak; // expected-error {{instance variable is already declared}} 154 NSData *g; // expected-error 2 {{instance variable is already declared}} 155 } 156 @end 157