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