1// TEST_CFLAGS -Wno-deprecated-declarations 2 3#include "test.h" 4#include "testroot.i" 5#include <objc/runtime.h> 6 7@interface Super1 : TestRoot @end 8@implementation Super1 9+(int)classMethod { return 1; } 10-(int)instanceMethod { return 10000; } 11@end 12 13@interface Super2 : TestRoot @end 14@implementation Super2 15+(int)classMethod { return 2; } 16-(int)instanceMethod { return 20000; } 17@end 18 19@interface Sub : Super1 @end 20@implementation Sub 21+(int)classMethod { return [super classMethod] + 100; } 22-(int)instanceMethod { 23 return [super instanceMethod] + 1000000; 24} 25@end 26 27int main() 28{ 29 Class cls; 30 Sub *obj = [Sub new]; 31 32 testassert(101 == [[Sub class] classMethod]); 33 testassert(1010000 == [obj instanceMethod]); 34 35 cls = class_setSuperclass([Sub class], [Super2 class]); 36 37 testassert(cls == [Super1 class]); 38 testassert(object_getClass(cls) == object_getClass([Super1 class])); 39 40 testassert(102 == [[Sub class] classMethod]); 41 testassert(1020000 == [obj instanceMethod]); 42 43 succeed(__FILE__); 44} 45