xref: /openbsd-src/gnu/usr.bin/gcc/gcc/testsuite/objc/execute/initialize.m (revision c87b03e512fc05ed6e0222f6fb0ae86264b1d05b)
1*c87b03e5Sespie/* Contributed by Nicola Pero - Wed Mar  7 17:55:04 CET 2001 */
2*c87b03e5Sespie#include <objc/objc.h>
3*c87b03e5Sespie
4*c87b03e5Sespie/* Test that +initialize is automatically called before the class is
5*c87b03e5Sespie   accessed */
6*c87b03e5Sespie
7*c87b03e5Sespiestatic int class_variable = 0;
8*c87b03e5Sespie
9*c87b03e5Sespie@interface TestClass
10*c87b03e5Sespie{
11*c87b03e5Sespie  Class isa;
12*c87b03e5Sespie}
13*c87b03e5Sespie+ (void) initialize;
14*c87b03e5Sespie+ (int) classVariable;
15*c87b03e5Sespie@end
16*c87b03e5Sespie
17*c87b03e5Sespie@implementation TestClass
18*c87b03e5Sespie+ (void) initialize
19*c87b03e5Sespie{
20*c87b03e5Sespie  class_variable = 1;
21*c87b03e5Sespie}
22*c87b03e5Sespie+ (int) classVariable
23*c87b03e5Sespie{
24*c87b03e5Sespie  return class_variable;
25*c87b03e5Sespie}
26*c87b03e5Sespie@end
27*c87b03e5Sespie
28*c87b03e5Sespieint main (void)
29*c87b03e5Sespie{
30*c87b03e5Sespie  if ([TestClass classVariable] != 1)
31*c87b03e5Sespie    {
32*c87b03e5Sespie      abort ();
33*c87b03e5Sespie    }
34*c87b03e5Sespie
35*c87b03e5Sespie  return 0;
36*c87b03e5Sespie}
37