URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [objc/] [execute/] [class_self-2.m] - Rev 378
Go to most recent revision | Compare with Previous | Blame | View Log
/* Contributed by Nicola Pero - Fri Oct 26 22:39:32 BST 2001 */ #include <stdlib.h> #include <objc/objc.h> /* Test calling a class method on self where self has been redefined to be another class - the call requires a cast */ /* The first class */ struct d { int a; }; @interface ClassA { Class isa; } + (Class) class; + (struct d) method; @end @implementation ClassA + (Class) class { return self; } + (struct d) method { struct d u; u.a = 5; return u; } #ifdef __NEXT_RUNTIME__ + initialize { return self; } #endif @end /* The second class */ @interface TestClass { Class isa; } + (void) test; @end @implementation TestClass + (void) test { self = [ClassA class]; if ([(Class)self method].a != 5) { abort (); } } #ifdef __NEXT_RUNTIME__ + initialize { return self; } #endif @end int main (void) { [TestClass test]; return 0; }
Go to most recent revision | Compare with Previous | Blame | View Log