No empty .Rs/.Re
[netbsd-mini2440.git] / gnu / dist / gcc4 / gcc / testsuite / objc / execute / class_self-2.m
blob7fa54906cce7b659afcd10e2a02d3e1dc738f522
1 /* Contributed by Nicola Pero - Fri Oct 26 22:39:32 BST 2001 */
2 #include <objc/objc.h>
4 /* Test calling a class method on self where self has been redefined
5    to be another class - the call requires a cast */
8 /* The first class */
9 struct d
11   int a;
14 @interface ClassA
16   Class isa;
18 + (Class) class;
19 + (struct d) method;
20 @end
22 @implementation ClassA
23 + (Class) class
25   return self;
28 + (struct d) method
30   struct d u;
31   u.a = 5;
32   
33   return u;
35 #ifdef __NEXT_RUNTIME__                                   
36 + initialize { return self; }
37 #endif
38 @end
40 /* The second class */
41 @interface TestClass
43   Class isa;
45 + (void) test;
46 @end
48 @implementation TestClass
49 + (void) test
51   self = [ClassA class];
52   
54   if ([(Class)self method].a != 5)
55     {
56       abort ();
57     }
60 #ifdef __NEXT_RUNTIME__                                   
61 + initialize { return self; }
62 #endif
63 @end
66 int main (void)
68   [TestClass test];
70   return 0;