blob: 814d465baf3426eea84aa6bb65026d2bafd8f77f [file] [log] [blame]
Fariborz Jahanian077c1e72009-03-02 21:55:29 +00001// RUN: clang -fsyntax-only -verify %s
2
3@interface Sprite {
4 int sprite, spree;
5 int UseGlobalBar;
6}
7+ (void)setFoo:(int)foo;
8+ (void)setSprite:(int)sprite;
9- (void)setFoo:(int)foo;
10- (void)setSprite:(int)sprite;
11@end
12
13int spree = 23;
14int UseGlobalBar;
15
16@implementation Sprite
17+ (void)setFoo:(int)foo {
18 sprite = foo; // expected-error {{use of undeclared identifier 'sprite'}}
19 spree = foo;
20 Xsprite = foo; // expected-error {{use of undeclared identifier 'Xsprite'}}
21 UseGlobalBar = 10;
22}
23+ (void)setSprite:(int)sprite {
24 int spree;
25 sprite = 15;
26 spree = 17;
27 ((Sprite *)self)->sprite = 16; /* NB: This is how one _should_ access */
28 ((Sprite *)self)->spree = 18; /* ivars from within class methods! */
29}
30- (void)setFoo:(int)foo {
31 sprite = foo;
32 spree = foo;
33}
34- (void)setSprite:(int)sprite {
35 int spree;
36 sprite = 15; // expected-warning {{local declaration of 'sprite' hides instance variable}}
37 self->sprite = 16;
38 spree = 17; // expected-warning {{local declaration of 'spree' hides instance variable}}
39 self->spree = 18;
40}
41@end