llvm-project/clang/test/SemaObjC/ivar-ref-misuse.m

43 lines
1.2 KiB
Mathematica
Raw Normal View History

// RUN: %clang_cc1 -fsyntax-only -verify %s
@interface Sprite { // expected-note{{'Sprite' declared here}}
int sprite, spree;
int UseGlobalBar;
}
+ (void)setFoo:(int)foo;
+ (void)setSprite:(int)sprite;
- (void)setFoo:(int)foo;
- (void)setSprite:(int)sprite;
@end
int spree = 23;
int UseGlobalBar;
@implementation Sprite
+ (void)setFoo:(int)foo {
sprite = foo; // expected-error {{instance variable 'sprite' accessed in class method}}
spree = foo;
Xsprite = foo; // expected-error {{unknown type name 'Xsprite'; did you mean 'Sprite'?}} \
// expected-error{{expected identifier or '('}}
UseGlobalBar = 10;
}
+ (void)setSprite:(int)sprite {
int spree;
sprite = 15;
spree = 17;
((Sprite *)self)->sprite = 16; /* NB: This is how one _should_ access */
((Sprite *)self)->spree = 18; /* ivars from within class methods! */
}
- (void)setFoo:(int)foo {
sprite = foo;
spree = foo;
}
- (void)setSprite:(int)sprite {
int spree;
sprite = 15; // expected-warning {{local declaration of 'sprite' hides instance variable}}
self->sprite = 16;
spree = 17; // expected-warning {{local declaration of 'spree' hides instance variable}}
self->spree = 18;
}
@end