1/* 2TEST_CRASHES 3TEST_RUN_OUTPUT 4objc\[\d+\]: tag index 7 used for two different classes \(was 0x[0-9a-fA-F]+ NSObject, now 0x[0-9a-fA-F]+ TestRoot\) 5CRASHED: SIG(ILL|TRAP) 6OR 7no tagged pointers 8OK: badTagClass.m 9END 10*/ 11 12#include "test.h" 13#include "testroot.i" 14 15#include <objc/objc-internal.h> 16#include <objc/Protocol.h> 17 18#if OBJC_HAVE_TAGGED_POINTERS 19 20int main() 21{ 22 // re-registration and nil registration allowed 23 _objc_registerTaggedPointerClass(OBJC_TAG_7, [NSObject class]); 24 _objc_registerTaggedPointerClass(OBJC_TAG_7, [NSObject class]); 25 _objc_registerTaggedPointerClass(OBJC_TAG_7, nil); 26 _objc_registerTaggedPointerClass(OBJC_TAG_7, [NSObject class]); 27 28 // colliding registration disallowed 29 _objc_registerTaggedPointerClass(OBJC_TAG_7, [TestRoot class]); 30 31 fail(__FILE__); 32} 33 34#else 35 36int main() 37{ 38 fprintf(stderr, "no tagged pointers\n"); 39 succeed(__FILE__); 40} 41 42#endif 43