1/* Ensure there are no bizarre difficulties with accessing the 'isa' field of objects. */ 2/* { dg-do compile } */ 3/* The use of isa is deprecated, but we still want to test that is works. */ 4/* { dg-additional-options "-Wno-deprecated-declarations" } */ 5 6#include "../objc-obj-c++-shared/TestsuiteObject.h" 7#include "../objc-obj-c++-shared/runtime.h" 8 9@interface TestsuiteObject (Test) 10- (Class) test1: (id)object; 11@end 12 13@interface Derived: TestsuiteObject 14- (Class) test2: (id)object; 15@end 16 17@implementation TestsuiteObject (Test) 18 19Class test1(id object) { 20#ifdef __NEXT_RUNTIME__ 21 Class cls = object->isa; 22#else 23 Class cls = object->class_pointer; 24#endif 25 return cls; 26} 27- (Class) test1: (id)object { 28#ifdef __NEXT_RUNTIME__ 29 Class cls = object->isa; 30#else 31 Class cls = object->class_pointer; 32#endif 33 return cls; 34} 35 36@end 37 38@implementation Derived 39 40Class test2(id object) { 41#ifdef __NEXT_RUNTIME__ 42 Class cls = object->isa; 43#else 44 Class cls = object->class_pointer; 45#endif 46 return cls; 47} 48- (Class) test2: (id)object { 49#ifdef __NEXT_RUNTIME__ 50 Class cls = object->isa; 51#else 52 Class cls = object->class_pointer; 53#endif 54 return cls; 55} 56 57@end 58 59Class test3(id object) { 60#ifdef __NEXT_RUNTIME__ 61 Class cls = object->isa; 62#else 63 Class cls = object->class_pointer; 64#endif 65 return cls; 66} 67