42 lines · plain
1// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s2 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@end12 13int spree = 23;14int UseGlobalBar;15 16@implementation Sprite17+ (void)setFoo:(int)foo {18 sprite = foo; // expected-error {{instance variable 'sprite' accessed in class method}}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@end42