OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [obj-c++.dg/] [local-decl-1.mm] - Diff between revs 308 and 338

Only display areas with differences | Details | Blame | View Log

Rev 308 Rev 338
/* Test for ivar access inside of class methods.  It should be allowed
/* Test for ivar access inside of class methods.  It should be allowed
   (with a warning), but only if no other declarations with the same
   (with a warning), but only if no other declarations with the same
   name are seen.  */
   name are seen.  */
/* Author: Ziemowit Laski .  */
/* Author: Ziemowit Laski .  */
/* { dg-do compile } */
/* { dg-do compile } */
#include "../objc-obj-c++-shared/Object1.h"
#include "../objc-obj-c++-shared/Object1.h"
@interface Sprite: Object {
@interface Sprite: Object {
  int sprite, spree;
  int sprite, spree;
}
}
+ (void)setFoo:(int)foo;
+ (void)setFoo:(int)foo;
+ (void)setSprite:(int)sprite;
+ (void)setSprite:(int)sprite;
- (void)setFoo:(int)foo;
- (void)setFoo:(int)foo;
- (void)setSprite:(int)sprite;
- (void)setSprite:(int)sprite;
@end
@end
int spree = 23;
int spree = 23;
@implementation Sprite
@implementation Sprite
+ (void)setFoo:(int)foo {
+ (void)setFoo:(int)foo {
  sprite = foo;  /* { dg-warning "instance variable .sprite. accessed in class method" } */
  sprite = foo;  /* { dg-warning "instance variable .sprite. accessed in class method" } */
  spree = foo;
  spree = foo;
}
}
+ (void)setSprite:(int)sprite {
+ (void)setSprite:(int)sprite {
  int spree;
  int spree;
  sprite = 15;
  sprite = 15;
  spree = 17;
  spree = 17;
  ((Sprite *)self)->sprite = 16;   /* NB: This is how one _should_ access */
  ((Sprite *)self)->sprite = 16;   /* NB: This is how one _should_ access */
  ((Sprite *)self)->spree = 18;    /* ivars from within class methods!    */
  ((Sprite *)self)->spree = 18;    /* ivars from within class methods!    */
}
}
- (void)setFoo:(int)foo {
- (void)setFoo:(int)foo {
  sprite = foo;
  sprite = foo;
  spree = foo;
  spree = foo;
}
}
- (void)setSprite:(int)sprite {
- (void)setSprite:(int)sprite {
  int spree;
  int spree;
  sprite = 15;  /* { dg-warning "local declaration of .sprite. hides instance variable" } */
  sprite = 15;  /* { dg-warning "local declaration of .sprite. hides instance variable" } */
  self->sprite = 16;
  self->sprite = 16;
  spree = 17;  /* { dg-warning "local declaration of .spree. hides instance variable" } */
  spree = 17;  /* { dg-warning "local declaration of .spree. hides instance variable" } */
  self->spree = 18;
  self->spree = 18;
}
}
@end
@end
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.