URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [obj-c++.dg/] [local-decl-1.mm] - Rev 703
Compare with Previous | Blame | View Log
/* Test for ivar access inside of class methods. It should be allowed(with a warning), but only if no other declarations with the samename are seen. *//* Author: Ziemowit Laski <zlaski@apple.com>. *//* { dg-do compile } */#include "../objc-obj-c++-shared/TestsuiteObject.h"@interface Sprite: TestsuiteObject {int sprite, spree;}+ (void)setFoo:(int)foo;+ (void)setSprite:(int)sprite;- (void)setFoo:(int)foo;- (void)setSprite:(int)sprite;@endint spree = 23;@implementation Sprite+ (void)setFoo:(int)foo {sprite = foo; /* { dg-warning "instance variable .sprite. accessed in class method" } */spree = foo;}+ (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; /* { dg-warning "local declaration of .sprite. hides instance variable" } */self->sprite = 16;spree = 17; /* { dg-warning "local declaration of .spree. hides instance variable" } */self->spree = 18;}@end
