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]+ Protocol\) 5CRASHED: SIG(ILL|TRAP) 6OR 7no tagged pointers 8OK: badTagClass.m 9END 10*/ 11 12#include "test.h" 13 14#include <objc/objc-internal.h> 15#include <objc/Protocol.h> 16 17#if OBJC_HAVE_TAGGED_POINTERS 18 19int main() 20{ 21 // re-registration and nil registration allowed 22 _objc_registerTaggedPointerClass(OBJC_TAG_7, [NSObject class]); 23 _objc_registerTaggedPointerClass(OBJC_TAG_7, [NSObject class]); 24 _objc_registerTaggedPointerClass(OBJC_TAG_7, nil); 25 _objc_registerTaggedPointerClass(OBJC_TAG_7, [NSObject class]); 26 27 // colliding registration disallowed 28 _objc_registerTaggedPointerClass(OBJC_TAG_7, [Protocol class]); 29 30 fail(__FILE__); 31} 32 33#else 34 35int main() 36{ 37 fprintf(stderr, "no tagged pointers\n"); 38 succeed(__FILE__); 39} 40 41#endif 42