1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 3 @interface Sprite { // expected-note{{'Sprite' declared here}} 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 13 int spree = 23; 14 int UseGlobalBar; 15 16 @implementation Sprite 17 + (void)setFoo:(int)foo { 18 sprite = foo; // expected-error {{instance variable 'sprite' accessed in class method}} 19 spree = foo; 20 Xsprite = foo; // expected-error {{unknown type name 'Xsprite'; did you mean 'Sprite'?}} \ 21 // expected-error{{expected identifier or '('}} 22 UseGlobalBar = 10; 23 } 24 + (void)setSprite:(int)sprite { 25 int spree; 26 sprite = 15; 27 spree = 17; 28 ((Sprite *)self)->sprite = 16; /* NB: This is how one _should_ access */ 29 ((Sprite *)self)->spree = 18; /* ivars from within class methods! */ 30 } 31 - (void)setFoo:(int)foo { 32 sprite = foo; 33 spree = foo; 34 } 35 - (void)setSprite:(int)sprite { 36 int spree; 37 sprite = 15; // expected-warning {{local declaration of 'sprite' hides instance variable}} 38 self->sprite = 16; 39 spree = 17; // expected-warning {{local declaration of 'spree' hides instance variable}} 40 self->spree = 18; 41 } 42 @end 43