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